
Django总结
1.django请求生命周期
http协议:
四大特性:
1.基于scoket应用于应用层的协议
2.基于请求响应的协议
3.无连接
4.无状态
WSGI协议:wsgiref,uwsgi,werkzeug实现模块
中间件:默认七个中间件,五个可自定义方法,全局访问频率限制,权限限制等
process_request 请求刚进来时
process_view 经过url执行视图函数之前
process_template_response 视图函数中return render时触发
process_exception 视图函数中报错执行
process_response 返回相应响应时
urls.py:路由控制器
MTV:
views.py:
视图层:FBV,CBV
CBV可张开讲:from django.views import View
看一下源码
返回结果必须是HttpResponse对象
templates.py:
模板语法:变量相关{{}},逻辑相关{%%}
models.py:
ORM操作
2.django session机制
request.session仅仅只是产生缓存,真正起作用还是中间件
1.生成随机字符串
2.把字符串所对应的信息存储到数据库中
3.给前端返回对应的信息
3.form组件 auth认证
1.登陆auth.login(request, user_obj)
2.判断是否是登陆状态request.user.is_authenticated()
3.修改密码——检查原来的密码user.check_password(old_password)
设置新的密码user.set_password(confirm_password)
保存user.save()
4.注销auth.logout(request)
4.django settings文件配置
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"), # 静态文件存放位置
]
AUTH_USER_MODEL = "app01.UserInfo"#指定你所继承的类(用户表)
# 指定用户上传的静态文件存储位置 例如avatar文件,会在media文件夹下自动创建avatar文件然后将文件存入avatar中
# MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
在url.py中写下面的固定写法
url(r'^media/(?P<path>.*)', serve, {'document_root': settings.MEDIA_ROOT}), # 固定写法 对外界开放服务器内部资源
LOGIN_URL = '/login/'#装饰器(当你没有登陆时重定向到此路由)
5.前后端传输数据编码格式
简单前后端传输页面代码搭建
http传输数据格式书写
三种常见编码格式总结
urlencoded ——username=jason&password=123
form-data
json--{"name":"jason","password":123}后台的信息在body中是二进制需要编码,需要先decode('utf-8')然后在json.loads()这个数据
请求体数据格式推导
请求首行作用ContentType参数作用
浏览器查看form表单默认提交方式以及组织数据格式
ajax提交数据(默认提交,json提交>>>前后端分离)
request.POST无法解析>>>request.body存储原始数据
admin源码
from django.utils.module_loading import autodiscover_modules def autodiscover(): autodiscover_modules('admin', register_to=site) #django启动的时候就会自动执行每一个应用下的admin.py文件 admin site源码 class AdminSite(object): def __init__(self, name='admin'): self._registry = {} # model_class class -> admin_class instance def register(self, model, admin_class=None, **options): if not admin_class: admin_class = ModelAdmin # 所有模型表公共的配置 # (******) {'模型表变量名':'模型表配置类对象'} self._registry[model] = admin_class(model) site = AdminSite()#用的是模块的单例模式
posted on
浙公网安备 33010602011771号