目录
一、静态文件
(一)配置html文件
默认情况下,所有的html文件都放在templates文件夹下
配置文件夹路径
'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', ], }, }, ]
(二)什么是静态文件
网站所使用的到的提前写好的css、js、第三方的前端模块、图片等修饰html文件的都叫做静态资源
默认情况下网站所用到的静态文件资源全部会放在static文件夹下
通常情况下static文件夹内部还会再建其他文件夹:
- css文件夹
- js文件夹
- font文件夹
- img文件夹
- Bootstrap
- 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请求配置
get请求可以携带参数
http://127.0.0.1:8000/login/?username=wick&password=123
特点:url?xxx=xxx&yyy=yyy
- 携带的数据不安全
- 携带的数据大小有限制,最大好像在4kb左右
- 通常携带不安全的数据
action
- 不写,默认向当前地址提交
- 只写后缀,/index
- 写全路径
提交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', ]
django后端的视图函数默认处理get请求,无论是get还是post请求,都会执行视图函数
二、request方法初识
(一)request.method
获取请求方式,纯大写的字符串
(二)request.POST
获取用户提交的post请求数据
- 获取数据
- request.POST.get():默认获取列表最后一个元素
- request.POST.getlist():
(三)request.GET
获取用户提交的get请求携带的参数
- 获取数据
- request.GET.get():默认获取列表最后一个元素
- request.GET.getlist():
三、django连接MySQL
django默认使用mysqldb模块连接,需要手动配置文件使用pymysql模块
- 项目名下的init文件
- 文件名下的init文件
# 上面的init文件中设置(无论哪一个都行,只要设置一个就可以了) import pymysql pymysql.install_as_MySQLdb()
四、django ORM简介
(一)ORM
对象关系映射
- 类映射表
- 对象映射数据
- 对象.属性映射字段对应的值
(二)优缺点
优点
让不会数据库操作的人也能够简单的去从操作数据
缺点
封装程度太高,有时候会出现查询速率偏低的问题
所以工作中,简单的用orm,复杂的,追求速度的则手动书写sql语句
(三)配置orm
书写模型类
应用下model.py中书写模型类
一个django项目对应一个数据库
(四)数据库迁移(同步)命令
只要models中和数据库相关的代码修改了,就要重新执行下面命令
python3 manage.py makemigrations
记录数据库的修改
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)
(二)删
- delete:会将filter查询出来的列表中所有的对象全部删除
- 一般情况下不会使用,会使用标记删除
models.User.objects.filter(id=delete_id).delete()
(三)改
update:会将filter查询出来的列表中的所有对象全部更新
models.User.objects.filter(id=edit_id).update(username=username)
(四)查
- filter括号内可以放多个关键字参数,关键字参数之间是and关系,返回的是一个“列表”
- all:查询所有
data = models.User.objects.filter(username=username) user_list = models.User.objects.all() # 相当于 models.User.objects.filter()