(day50)二、文件配置、ORM

只愿长相守 提交于 2019-12-05 11:21:31

一、静态文件

(一)配置html文件

  1. 默认情况下,所有的html文件都放在templates文件夹下

  2. 配置文件夹路径'DIRS': [os.path.join(BASE_DIR, 'templates')]

    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [os.path.join(BASE_DIR, 'templates')],
            'APP_DIRS': True,
            'OPTIONS': {
                'context_processors': [
                    'django.template.context_processors.debug',
                    'django.template.context_processors.request',
                    'django.contrib.auth.context_processors.auth',
                    'django.contrib.messages.context_processors.messages',
                ],
            },
        },
    ]

(二)什么是静态文件

  1. 网站所使用的到的提前写好的css、js、第三方的前端模块、图片等修饰html文件的都叫做静态资源

  2. 默认情况下网站所用到的静态文件资源全部会放在static文件夹下

    通常情况下static文件夹内部还会再建其他文件夹:

    1. css文件夹
    2. js文件夹
    3. font文件夹
    4. img文件夹
    5. Bootstrap
    6. fontawesome

(三)静态文件配置

django中需要手动创建静态文件存放的文件夹

STATIC_URL = '/static/'  # 访问静态资源接口前缀,通常情况下接口前缀的名字也叫static
# 手动配置静态文件访问资源
STATICFILES_DIRS = [  # 静态资源所在的文件夹路径
    os.path.join(BASE_DIR,'static') # 将static文件下的资源暴露给用户
]

(四)静态文件动态绑定

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

(五)form表单POST请求配置

  1. get请求可以携带参数

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

    特点:url?xxx=xxx&yyy=yyy

    1. 携带的数据不安全
    2. 携带的数据大小有限制,最大好像在4kb左右
    3. 通常携带不安全的数据
  2. action

    1. 不写,默认向当前地址提交
    2. 只写后缀,/index
    3. 写全路径
  3. 提交post请求返回403

    需要配置文件中注释一行

    # 中间件
    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',
    ]
  4. django后端的视图函数默认处理get请求,无论是get还是post请求,都会执行视图函数

二、request方法初识

(一)request.method

获取请求方式,纯大写的字符串

(二)request.POST

  1. 获取用户提交的post请求数据

  2. 获取数据
    1. request.POST.get():默认获取列表最后一个元素
    2. request.POST.getlist():

(三)request.GET

  1. 获取用户提交的get请求携带的参数

  2. 获取数据
    1. request.GET.get():默认获取列表最后一个元素
    2. request.GET.getlist():

三、django连接MySQL

django默认使用mysqldb模块连接,需要手动配置文件使用pymysql模块

  1. 项目名下的init文件
  2. 文件名下的init文件
# 上面的init文件中设置(无论哪一个都行,只要设置一个就可以了)
import  pymysql
pymysql.install_as_MySQLdb()

四、django ORM简介

(一)ORM

对象关系映射

  1. 类映射表
  2. 对象映射数据
  3. 对象.属性映射字段对应的值

(二)优缺点

  1. 优点

    让不会数据库操作的人也能够简单的去从操作数据

  2. 缺点

    封装程度太高,有时候会出现查询速率偏低的问题

所以工作中,简单的用orm,复杂的,追求速度的则手动书写sql语句

(三)配置orm

  1. 书写模型类

    应用下model.py中书写模型类

  2. 一个django项目对应一个数据库

(四)数据库迁移(同步)命令

只要models中和数据库相关的代码修改了,就要重新执行下面命令

  1. python3 manage.py makemigrations

    记录数据库的修改

  2. python3 manage.py migrate

    将修改操作同步到数据库

五、模型表字段的增删改查

(一)字段的修改

直接修改models中的模型类代码,再执行两条迁移命令

# 方式1 设置默认值
email = models.EmailField(default='123.qq.com')
# 方式2 允许字段为空
phone = models.BigIntegerField(null=True)
# 直接在提示中给默认值
gender =models.CharField(max_length=32)

(二)字段的删除

直接注释或删除对应的字段,然后再执行迁移命令(谨慎使用)

六、模型表数据的增删改查

(一)增

create方法会有一个返回值,返回值就是当前被创建的对象本身

user_obj = mpdels.User.objects.create(username=username,password=password)
print(user_obj,user_obj.username,user_obj.password)

(二)删

  1. delete:会将filter查询出来的列表中所有的对象全部删除
  2. 一般情况下不会使用,会使用标记删除
models.User.objects.filter(id=delete_id).delete()

(三)改

update:会将filter查询出来的列表中的所有对象全部更新

models.User.objects.filter(id=edit_id).update(username=username)

(四)查

  1. filter括号内可以放多个关键字参数,关键字参数之间是and关系,返回的是一个“列表”
  2. all:查询所有
data = models.User.objects.filter(username=username)
user_list = models.User.objects.all()
# 相当于 models.User.objects.filter()
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!