Django的方法

---恢复内容开始---

静态文件的配置:

静态文件:对已经写好过了的文件,我们只是拿过来用,那么这个文件就可以被称为静态文件。

静态文件可以是:
  bootstrap一类的框架的的文件

  image图片文件夹

  css样式文件

  js文件夹

在django中所有的静态文件都存放在static文件夹下

  一般存放的子文件夹

  css文件夹  当前网站的css样式文件

  js文件夹  当前网站的js文件

  image文件夹  图片文件夹

  其 他(前端框架代码 第三方插件代码...

你的静态文件如果要想在django中有效的话,那么必须在settings中配置一下

配置:

  STATICFILES_DIRS = [

    os.path.join(BASE_DIR,'static'),

  ]

这样你只要输入相应的静态文件的路径就可以有效的使用。

STATIC_URL = '/static/'  这个不是什么文件夹的名字,而是接口前缀

只要你想要访问静态文件,那么就必须要前面都必须是/static打头,这个不是你的静态文件夹的名字,而是接口前缀。后面才是要找寻的路径。

那个配置为什么是列表呢

  因为里面可以存放多个路径,这个访问不到访问下一条,都没有会报请求资源不存在。

动态解析接口前缀:

{% load static %}  这个是初步导入接口前缀

 <link rel="stylesheet" href="{% static 'bootstrap-3.3.7-dist/css/bootstrap.min.css' %}">

<script src="{% static 'bootstrap-3.3.7-dist/js/bootstrap.min.js' %}"></script>

一些注意事项:

一个端口号就启动一个django项目,免得出bug

用户可以访问到的资源放在url中,也就是说url中设定什么资源,用户就可以访问到相应的资源。

FORM表单默认的提交方式是get请求

携带数据的方式是url后面问号跟数据

http://127.0.0.1:8000/login/?username=zekai&password=123

另外请求改成post后要去settings里面去注释掉一个中间件

MIDDLEWARE = [
            'django.middleware.security.SecurityMiddleware',
            'django.contrib.sessions.middleware.SessionMiddleware',
            'django.middleware.common.CommonMiddleware',
            # 'django.middleware.csrf.CsrfViewMiddleware',
            'django.contrib.auth.middleware.AuthenticationMiddleware',
            'django.contrib.messages.middleware.MessageMiddleware',
            'django.middleware.clickjacking.XFrameOptionsMiddleware',
        ]

form表单提交数据的目的地是由action控制的

  1.不填,默认是当前文件所在路径

  2.填全路径

  3.写后缀

视图函数一般是先处理get请求的

request这个参数是wsgi这个模块帮我们处理的,跟wsgiref模块里面的env很相似,都是请求相关的数据

获取请求的方法就是

request.method

GET:

  request.GET获取前端get请求的数据(类似一个大字典)

  request.GET.get('name')  这个默认是获取最后的值

  request.GET.getlist('hobby')  这个是获取全部

POST:

  request.POST是获取前端post请求携带的数据(类似于一个大字典)

  request.POST.get('name')这个默认是获取最后的值

  request.POST.getlist('hobby')  这个是获取全部

parcharm操作数据库

就是database那个按钮,使用的时候别忘了装插件先

django操作mysql

django默认使用的是自带的splite3数据库,小型数据库。

如果想要使用其他的数据库就要在settings配置文件中重新配置

DATABASES = {
            'default': {
                'ENGINE': 'django.db.backends.mysql',
                'NAME': 'day51',
                'HOST':'127.0.0.1',
                'PORT':3306,
                'USER':'root',
                'PASSWORD':'123',
            }

配置完后还要在项目文件夹或者应用名文件夹下的__init__文件中替换已经不兼容的mysql_db这个

默认连接mysql的。

import pymysql
pymysql.install_as_MySQLdb()

django的orm

ORM:对象关系映射

类---------表

对象-----------表中记录

对象的属性---------记录上字段对应的值

首先要在models.py这个文件上写模型表类

class User(models.Model):
    # 将id字段设置为User表主键字段  在django orm中 你可以不写主键字典      
    django会默认给你的表创建一个名为id的主键字段
   # id = models.AutoField(primary_key=True)  # 一旦你自己指定了主键字段 那么django就不会自动再帮你创建了
      username = models.CharField(max_length=32)  # username varchar(32)   CharField必须要指定max_length参数
      password = models.IntegerField()  # password int    

数据库迁移(同步)记录的条指令

python manage.py   makemigrations  这个只是将操作记录下来,但并没有同步到数据库中

python manage.py  migrate   这个是真正同步到数据库中

注意注意!!!!:

一旦表中字段发生改变就要执行这条指令,一条用于记录操作,一条用于真正同步

表字段的增删改查

  就是在类中加字段,但要记住,如果表已经建好了,那么再新增字段有2种方式

  1.给新增的字段设置默认值

    addr = models.CharField(max_length=32,default='China')

  2.让新增的字段可以为空

    null=True

删(慎用):

  就是注释那个字段,然后执行 python manage.py makemigrations 和python manage.py migrate这2条指令

数据的增删改查

查:

  先导入models

  models.User.objects  这3个参数无论增删改查都是固定的

  models.User.objects.all()  这个是查所有=select * from User;

  model.User.objects.get(name=name) 这个是获取对象本身,如果不存在则会报错

  res = models.User.objects.filter(username=username)  这个获取的是列表套对象,可以通过索引0拿对象,但不建议,建议用first()拿对象,因为里面已经封装好了。

  查询出来的queryset对象都有一个query方法可以获取原生的sql语句

增:
  1.models.User.objects.create(username=username,password=password)

  2.user_obj = models.User(username=username,password=password)

    user_obj.save()

删:
  models.User.objects.filter(条件).delete()

  1.models.User.objects.filter(条件).update()

  2.user_obj.name=username

   user_obj.save()

总结:

用户的增删改查

1.通过orm展示所有到前端

  all()

  模板语法for循环

2.添加新增按钮

  a标签的href直接触发后端逻辑

  create()

编辑和删除按钮

利用get请求携带的数据,在url后面跟问号加对应数据的id值,

如果是编辑就重新渲染一个页面,如果是删除直接操作就好。

原文地址:https://www.cnblogs.com/xinfan1/p/11529277.html