Django采用了MVT的设计模式,即模型(Model),视图(View)和模板(Template)MVT模型的工作流程
pip install django2.1 创建第一个项目
2.2 启动django项目复制代码
- django-admin startproject 项目名
0.0.0.0 让其他电脑可以链接到开发服务器,8000为端标语,如果不说明,默认端口为8000复制代码
- python3 manage.py runserver 0.0.0.0:8000
- 或
- python manage.py runserver 0.0.0.0:8000
path() 可以接收四个参数,两个必选参数:route,view 两个可选参数:kwargs name
print(request.method)
1.HttpRequest.GET:一个类似于字典的对象,包含 HTTP GET 的所有参数。详情请参考 QueryDict 对象。
2.HttpRequest.POST:一个类似于字典的对象,如果哀求中包含表单数据,则将这些数据封装成 QueryDict 对象。
注意:键值对的值是多个的时候,比如checkbox范例的input标签,select标签,需要用: request.POST.getlist("hobby")
3.HttpRequest.body:一个字符串,代表哀求报文的哀求体的原数据。
复制代码
- HttpRequest.path:表示请求的路径组件(不含get参数) HttpRequest.get_full_path():含参数路径
简单访问下,在地址栏输入127.0.0.1:8000/students/index (get哀求)复制代码
- HttpRequest.META:一个标准的Python 字典,包含所有的HTTP 首部。具体的头部信息取决于客户端和服务器
content:返回的内容。实例化HttpResponse('content')
status:返回的HTTP相应状态码。200 404
content_type:返回的数据的MIME范例,默认为 text/html 。浏览器会根据这个属性,来体现数据。如果是 text/html ,那么就会解析这个字符串,如果 text/plain ,那么就会体现一个纯文本。
设置相应头: response['X-Access-Token'] = 'xxxx' 。
默认情况下 JsonResponse 只能对字典进行 dump ,如果想要对非字典的数据进行 dump ,那么需要给 JsonResponse 通报一个 safe=False 参数。示例代码如下:
pip install PyMySQL
from pymysql import install_as_MySQLdb作用是让django的ORM能以mysqldb的方式来调用pymysql
install_as_MySQLdb() # 让pymysql以MySQLDB的运行模式和Django的ORM对接运行
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': '127.0.0.1', # 数据库主机
'PORT': 3306, # 数据库端口
'USER': 'root', # 数据库用户名
'PASSWORD': '123', # 数据库用户密码
'NAME': 'student' # 数据库名字
}
}
create database student; # mysql8.0默认就是utf8mb4;
create database student default charset=utf8mb4; # mysql8.0之前的版本
当模型字段的on_delete=CASCADE, 删除蔬菜(id=1),则在外键cid=1的商品id1和3就被删除。6.2 数据库迁移
当模型字段的on_delete=PROTECT,删除蔬菜,mysql主动查抄商品信息表,有没有cid=1的记录,有则提示必须先移除掉商品信息表中,id=1的所有记录以后才能删除蔬菜。
当模型字段的on_delete=SET_NULL,删除蔬菜以后,对应商品信息表,cid=1的数据的cid全部被改成cid=null
当模型字段的on_delete=SET_DEFAULT,删除蔬菜以后,对应商品信息表,cid=1的数据记录的cid被被设置默认值。
说明:如果要包含%无需转义,直接写即可。例:查询姓名包含'华'的学生
以上运算符都区分巨细写,在这些运算符前加上i表示不区分巨细写,如iexact、icontains、istartswith、iendswith.
(1)正向查询按字段
(2)反向查询按表名小写大概related_name
(1)正向关联按关联字段
(2)反向按表名小写或related_name
注:简单地打印查询集不会填充缓存这意味着雷同的数据库查询将执行两次,显然倍增了你的数据库负载。同时,还有大概两个结果列表并不包含雷同的数据库记录,因为在两次哀求期间有大概有Article被添加进来或删除掉。为了避免这个题目,只需保存查询集并重新使用它:
以是单独queryset的索引和切片都不会缓存
- 遍历queryset时
- if语句(为了避免这个,可以用exists()方法来查抄是否有数据)
正向天生,指的是先创建model.py文件,然后通过django内置的编译器,在数据库如mysql中创建出符合model.py的表。
反向天生,指的是先在数据库中create table,然后通过django内置的编译器,天生model代码。
同源策略,它是由Netscape提出的一个闻名的安全策略。现在所有支持JavaScript 的浏览器都会使用这个策略。所谓同源是指,域名,协议,端口雷同。当一个浏览器的两个tab页中分别打开来 百度和谷歌的页面当浏览器的百度tab页执行一个脚本的时候会查抄这个脚本是属于哪个页面的,即查抄是否同源,只有和百度同源的脚本才会被执行。如果非同源,那么在哀求数据时,浏览器会在控制台中报一个异常,提示拒绝访问。那么怎样解决这种跨域题目呢,我们主要由三个思绪:
这里主要给大家介绍第二个:cors
- jsonp
- cors
- 前端代理
process_request:默认返回None,返回None,则继续执行下一个中间件的
process_request:一旦返回相应体对象,则会拦截返回。
process_response必须有一个形参response,并return response;这是view函数返回的相应体,像接力棒一样传承给最后的客户端。
session 在服务器端,cookie 在客户端(浏览器)Session配置
session 默认被存在在服务器的一个文件里(不是内存)
session 的运行依赖 session id,而 session id 是存在 cookie 中的.
session 可以放在 文件、数据库、或内存中都可以。
用户验证这种场所一般会用 session
from django.contrib.auth.models import AbstractUserDjango其实有两个配置文件,我们平时用的经常改的在settings.py中,其实还有一个:
设置Auth认证模块使用的用户模型为我们自己定义的用户模型
格式:“子应用目录名.模型类名”
AUTH_USER_MODEL = 'users.User'
from django.conf import global_settings
from django.core.paginator import Paginator
1 FBV :function based view9.6.1 前后段分离模式
2 BCV:class based view
POST http://www.xxx.com/api/students/ 添加学生数据
GET http://www.xxx.com/api/students/ 获取所有学生
GET http://www.xxx.com/api/students/1/ 获取id=pk的学生
DELETE http://www.xxx.com/api/students/1/ 删除id=pk的一个学生
PUT http://www.xxx.com/api/students/1/ 修改一个学生的全部信息 [id,name,sex,age,]
PATCH http://www.xxx.com/api/students/1/ 修改一个学生的部分信息[age]
picture = models.ImageField(upload_to='avatars/', default="avatars/default.png",blank=True, null=True)这个参数会加在 settings.py 中的 MEDIA_ROOT背面, 形成一个路径, 这个路径就是上 传图片的存放位置,默认在Django项目根路径下,也就是MEDIA_ROOT默认是Django根目录
注:定义 ImageField 字段时必须订定参数 upload_to这个字段要写相对路径,
MEDIA_ROOT:存放 media 的路径, 这个值加上 upload_to的值就是真实存放上传图片文件位置3.url.py:
MEDIA_URL:给这个属性设值之后,静态文件的链接前面会加上这个值,如果设置这个值,则UserInfo.avatar.url主动更换成:/media/avatars/default.png,可以在模板中直接调用:
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |