Django
2017-07-10 12:17:11 15 举报
AI智能生成
Django知识点整理:视图、orm
作者其他创作
大纲/内容
Django
ORM
创建表
基本结构
class(models.Model)
字段
参数
元信息
连表操作
一对一
一对多
多对多
操作表
增
删
改
查
路由系统
单一路由对应
基于正则的路由
添加额外的参数
为路由映射设置名称
根据APP对路由规则进行分类
命名空间
project.urls.py
app01.urls.py
app01.views.py
其他
XSS和CSRF
XSS(跨栈脚本攻击)
预防方式
无法控制输入内容不使用safe
{ <div>{{ item|safe }}</div> }
在views文件中过滤特殊字符,如alter
使用mark_safe标记
temp = mark_safe(temp)
CSRF(跨站请求伪造)
防止方式
全局
中间件 django.middleware.csrf.CsrfViewMiddleware
局部
@csrf_protect,为当前函数强制设置防跨站请求伪造功能,即便settings中没有设置全局中间件。
@csrf_exempt,取消当前函数防跨站请求伪造功能,即便settings中设置了全局中间件。
应用方式
form表单中添加{% csrf_token %}
全站禁用# 'django.middleware.csrf.CsrfViewMiddleware',
局部禁用@csrf_exempt
局部使用@csrf_protect
Ajax提交数据时候,携带CSRF
放在请求头中
function submitForm(){ var token = $.cookie('csrftoken'); var user = $('#user').val(); $.ajax({ url: '/csrf1.html'span style=\"font-size: 1em;\
放置在data中携带
function submitForm(){ var csrf = $('input[name=\"csrfmiddlewaretoken\"]').val(); var user = $('#user').val(); $.ajax({ url: '/csrf1.html'span style=\"font-size: 1em;\
cookie和session
cookie
保存在客户端浏览器上的键值对
获取cookie
request.COOKIES['key']
设置cookie
操作cookie
<script src='/static/js/jquery.cookie.js'></script>$.cookie(\"list_pager_num\"span style=\"font-size: 1em;\
session
保存在服务器端的数据
数据库Session
request.session['k1']
request.session.keys()
request.session.exists(\"session_key\")
request.session.delete(\"session_key\")
缓存session
文件session
缓存+数据库Session
加密cookie Session
Session用户验证
中间件
分页
Form
应用
是否校验成功
obj.is_valid()
所有错误信息(值为字典)
obj.errors
正确信息
obj.cleaned_data
部分细节
单选框(obj = FooForm({'cls_id':1}))
定义类
class LoginForm(Form): username=fields.CharField( max_length=18span style=\"font-size: 1em;\
JSONP
同源策略:限制Ajax,不限制:script
同源策略阻止从一个源加载的文档或脚本获取或设置另一个源加载的文档的属性。
使用方法
自己写动态创建script
function getUsers(){ var tag = document.createElement('script'); tag.src = \"http://www.s4.com:8001/users/?funcname=bbb?sdd\"; document.head.appendChild(tag);}
jQuery
CORS
跨域资源共享
模板
模板语言
变量
{{ item }}
if判断
{% if condition %} ... display {% endif %}
for循环
{% for item in item_list %} <a>{{ item }}</a> {% endfor %}
母板、子板
母版
{% block title %span style=\
子板
{% extends \"base.html\" %} {% block title %} {% endblock %}
ifequal(如果两值相等,显示标签中间值)
{% ifequal user currentuser %} <h1>Welcome!</h1>{% endifequal %}
include标签
{% include \"nav.html\" %}
前端定义函数
filter(最多支持2个参数)
@register.filterspan style=\"font-size: 1em;\
{{ \"alex\"|my_func1:\"-egon\" }}
simple_tag(支持三个以上参数)
@register.simple_tagspan style=\"font-size: 1em;\
视图
CBV
FBV
基本配置
基本指令
同步数据库
python manage.py makemigrationspython manage.py migrate
创建app
python manage.py startapp appname
清空数据库
python manage.py flush
创建Django程序
终端命令:django-admin startproject sitename
程序目录
主文件名
static
templates
manage.py
配置文件
数据库
DATABASES
'default': {'ENGINE': 'django.db.backends.mysql'span style=\"font-size: 1em;\
TEMPLATE_DIRS = (span style=\"font-size: 1em;\
静态文件
STATICFILES_DIRS = (span style=\"font-size: 1em;\
setting中添加当前app
请求生命周期
wsgi封装→Django框架→中间件→路由系统→视图处理→中间件→wsgi(本质字符串传递)
session是保存在服务端的数据,cookie是保存在浏览器上的键值对,当用户登录时,服务端会生成随机字符串给客户端的浏览器写在cookie中,服务器将随机字符串保存起来,该随机字符串对应一个值,对应一个用户
0 条评论
回复 删除
下一页