views
request.body
request.POST
request.GET
request.FILES
request.xxx.getlist()
request.Mete
request.method
request.path_info
request.COOKIES
return HttpResponse(...)
return render
return redirect
model操作:
表内容操作:
models.TB,object.create()
models.TB.object.all()
models.TB.object.filter()
models.TB.object.delete
models.TB.object.values
models.TB.object.values_list
models.TB.object.get
models.TB.object.filter().update()
models.TB.object.filter().first()
models.TB.object.filter().count()
mdoels.TB.object.filter(双下划线跨表)
models.TB.object.filter(id__gt=1)
models.TB.object.filter(id__lt=1)
models.TB.object.filter(id__gte=1)
models.TB.object.filter(id__lte=1)
models.TB.object.exclude(id__get=1)
models.TB.object.filter(id__in=[])
models.TB.object.all().order_by()
models.TB.object.distinct()
多对多:
obj.set()
obj.add()
obj.remove()
obj.clear()
obj.all()
模板语言:
基本传参 {'k', 'v'}
继承 extends
组件:include
simple_tag,filter
Session:(依赖于Cookie)
Cookie: 保存在用户浏览器端的键值对
Session: 保存在服务器端的键值对
request.session['k'] = v 设置值
request.session.setdefault('k',v) 设置值,如果存在则不设置
requset.session['k'] 获取值
request.session.get('k',None) 获取值
del request.session['k'] 删除值
request.session.delete("session_key") 删除整个session数据
request.session.clear() 删除整个session数据
request.session.session_key 获取用户session的随机字符串
request.session.clear_expired() 将所有session小于当前日期的session删除
request.session.set_expiry(value) 设置超时时间,默认超时时间为2周
Session 基本设置
SESSION_ENGINE = 'django.contrib.sessions.backends.db' 设置引擎(默认)
'django.contrib.sessions.backends.signed_cookies' 加密cookie Session
'django.contrib.sessions.backends.cache' 缓存版本
'django.contrib.sessions.backens.cached_db' 缓存+数据库版本
'django.contrib.sessions.backends.file' 文件版本
SESSION_COOKIE_NAME = "Sessionid" Session的cookie保存在浏览器上时的key,Sessionid == 随机字符串
SESSION_COOKIE_PATH = "/" Session的cookie保存的路径
SESSION_COOKIE_DOMAIN = None Session的cookie报讯的域名
SESSION_COOKIE_SECURE = False 是否https传输cookie
SESSION_COOKIE_HTTPONLY = True 是否Session的cookie只支持http传输
SESSION_COOKIE_AGE = 1209600 Session的cookie失效日期(默认2周)
SESSION_EXPIRE_AT_BROWSER_CLOSE = False 是否关闭浏览器时Session过期
SESSION_SAVE+EVERY_REQUEST = False 是否每次请求都保存Session
CSRF:
装饰器可实现对单一views添加CSRF验证:
from django.views.decorators.csrf import csrf_exempt,csrf_protect
@csrf_protect && @csrf_exempt
表单提交: 在from表单中添加 {% csrf_token %}
Ajax提交:添加headers:{'X-CSRFtoken':$.cookie('csrftoken')} 或者、
$.ajaxSetup({
beforeSend:function(xhr,settings){
xhr.setRequestHeader('X-CSRFtoken',$.cookie('csrftoken'));
}
})
中间件:setting.py 中MIDDLEWARE = [ ] 中注册中间件。 自定义中间件:
class C1(MIddlewareMixin): # 继承固定,类名自定义
def process_request(self,request): #函数名称固定,参数位置固定
pass(常用)
def process_view(self,request, view_func, view_func_args,view_func_kwargs): #函数名称固定,参数位置固定
pass(常用)
def process_response(self,request,response): #函数名称固定,参数位置固定
pass(常用)
return response #返回值固定
def process_exception(self,request, exception) # 函数名称固定,参数位置固定;不常用
pass(处理views函数中的异常)
return
def process_template_response(self,request, response): #函数名称固定,参数位置固定;不常用
pass(如果views函数返回对象中具有render方法,此函数才执行)
return
缓存:
3种应用: 1.视图函数级别的缓存.
2.HTML块缓存:在HTML中导入{% load cache %} 然后在块中使用{% cache 时间 缓存key%} .... {%end cache%}
3.对整个网站缓存:使用中间件的方法
5种配置:
a.开发调试模式
b.内存版本
c.文件版本
d.数据库版本
e.Memcache缓存 (python-memcached模块)分布式缓存
f.Memcache缓存(pylibmc模块)分布式缓存
信号:
Django信号:在操作运行之前或者之后自动触发的事件(通过绑定自定义函数到信号中实现信号)默认信号
导入信号: import django.care.signal
import django.db.models.signals
import django.test.signals
import django.db.backends.signals
from django.db.models.signals import pre_init -->导入信号
def f1(sender, **kwargs): --> 定义信号
pass
pre_init.connec(f1) --> 在信号中注册函数
自定义函数:
import django.dispatch
pizza_done = django.dispatch.Signal(proving_args=["topping","size"]) 定义信号,需要提供的参数
pizza_done.send(sender="xxoo",topping=123,size=34) 触发
pizza_done.coonect(f1) 在信号中注册函数