Django views详解,model操作,模板语言,session,中间件,缓存,Django配置模式,信号,自定义函数

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)   在信号中注册函数

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值