views
    request.body
        request.POST(request.body)
        request.FILES(request.body)
        request.GET
        request.XXX.getlist

    request.Meta(...)
        request.method(POST,GET,PUT)
        request.path_info
        request.COOKIES

返回cookie
    response=HttpResponse(a)
    response.set_cookie()
    return response

    response['name']='alex' 创建响应头 name=alex

model操作
    表内容操作:
        models.TB.objects.create()
        models.TB.objects.create(**{})
        obj=models.TB(...)
        obj.save()

        models.TB.objects.all()
        models.TB.objects.all()[7:10]  切片数据

        models.TB.objects.update(...)
        models.TB.objects.filter(id__in=[1,2,3...])
        models.TB.objects.filter(单下划线id)
        models.TB.objects.filter(..).delete
        models.TB.objects.values  结果是字典
        models.TB.objects.values_list 结果是元组
        models.TB.objects.get
        models.TB.objects.filter().update()
        models.TB.objects.filter().first()
        models.TB.objects.filter(**{})
        models.TB.objects.filter(**{}).count()
        models.TB.objects.filter(双下划线跨表)
        models.TB.objects.filter(id__gt=1,name='root')  and关系
        models.TB.objects.filter(id__range=[1,3])
        ...                     (id__lt=1)
                                (id__lte=1)
                                (id__gte=1)

        models.TB.objects.exclude(id__gt=1)

        多对多:
            obj.set
            obj.add(1,2,3)
            obj.add([1,2,3])
            obj.remove([1,2,3])
            obj.clear()
            obj.all()

         models.TB.objects.all()
         [obj,obj]
         obj.fk.name

         models.TB.objects.all().order_by('')
         models.TB.objects.distinct()

        class A:
            name ..
            # b_set  通过A查B

        class B:
            caption ..
            fk=ForignKey(A)
            B.fk.A的列名  通过B查A

        多对多
         class A:
            name ..
            # b_set  通过A查B

        class B:
            caption ..
            r=M2M(a)

模板语言
        def func(request):
            return render(request,'index.html',{'val':[1,2,3]})

        index.html
            <h1>{{val.0}}</h1>

         继承
         extends  "layout.html"

        include加载组件

        simple_tag,filter

session
    基于 cookie做用户验证时:敏感信息不适合放在cookie中
    cookie:保存在用户浏览器端的键值对
    session:保存在服务器的键值对 依赖于cookie
    原理:生成一个随机字符串对应一个字典,value保存用户信息

    服务器session
        获取session
        request.session.get()
        设置session
        request,session[x]=x
        清空session
        request.session.clear()

    def使用
        # 获取、设置、删除Session中数据
        request.session['k1']
        request.session.get('k1',None)
        request.session['k1'] = 123
        request.session.setdefault('k1',123) # 存在则不设置
        del request.session['k1']

        # 所有 键、值、键值对
        request.session.keys()
        request.session.values()
        request.session.items()
        request.session.iterkeys()
        request.session.itervalues()
        request.session.iteritems()

        # 用户session的随机字符串
        request.session.session_key

        # 将所有Session失效日期小于当前日期的数据删除
        request.session.clear_expired()

        # 检查 用户session的随机字符串 在数据库中是否
        request.session.exists("session_key")

        # 删除当前用户的所有Session数据
        request.session.delete("session_key")

        request.session.set_expiry(value)
            * 如果value是个整数,session会在些秒数后失效。
            * 如果value是个datatime或timedelta,session就会在这个时间后失效。
            * 如果value是0,用户关闭浏览器session就会失效。
            * 如果value是None,session会依赖全局session失效策略。

    配置文件设置默认操作:
    settings.py配置
    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,默认修改之后才保存(默认)每次请求 超时时间起点重新计算

缓存
CACHES = {
        'default': {
            'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
            'LOCATION': [
                ('172.19.26.240:11211',10),
                ('172.19.26.242:11211',11),
            ]
        }
    }

信号
Model signals
    pre_init                    # django的modal执行其构造方法前,自动触发
    post_init                   # django的modal执行其构造方法后,自动触发
    pre_save                    # django的modal对象保存前,自动触发
    post_save                   # django的modal对象保存后,自动触发
    pre_delete                  # django的modal对象删除前,自动触发
    post_delete                 # django的modal对象删除后,自动触发
    m2m_changed                 # django的modal中使用m2m字段操作第三张表(add,remove,clear)前后,自动触发
    class_prepared              # 程序启动时,检测已注册的app中modal类,对于每一个类,自动触发
Management signals
    pre_migrate                 # 执行migrate命令前,自动触发
    post_migrate                # 执行migrate命令后,自动触发
Request/response signals
    request_started             # 请求到来前,自动触发
    request_finished            # 请求结束后,自动触发
    got_request_exception       # 请求异常后,自动触发
Test signals
    setting_changed             # 使用test测试修改配置文件时,自动触发
    template_rendered           # 使用test测试渲染模板时,自动触发
Database Wrappers
    connection_created          # 创建数据库连接时,自动触发

导入信号模块
    from django.core.signals import request_finished
    from django.core.signals import request_started
    from django.core.signals import got_request_exception

    from django.db.models.signals import class_prepared
    from django.db.models.signals import pre_init, post_init
    from django.db.models.signals import pre_save, post_save
    from django.db.models.signals import pre_delete, post_delete
    from django.db.models.signals import m2m_changed
    from django.db.models.signals import pre_migrate, post_migrate

    from django.test.signals import setting_changed
    from django.test.signals import template_rendered

    from django.db.backends.signals import connection_created

    def callback(sender, **kwargs):
        print("xxoo_callback")
        print(sender,kwargs)

    xxoo.connect(callback)
    # xxoo指上述导入的内容

自定义信号
a. 定义信号
import django.dispatch
pizza_done = django.dispatch.Signal(providing_args=["toppings", "size"])

b. 注册信号
def callback(sender, **kwargs):
    print("callback")
    print(sender,kwargs)

pizza_done.connect(callback)

c. 触发信号
from sg import pizza_done

pizza_done.send(sender='seven',toppings=123, size=456)

Form验证笔记的更多相关文章

  1. Nodejs之MEAN栈开发(四)---- form验证及图片上传

    这一节增加推荐图书的提交和删除功能,来学习node的form提交以及node的图片上传功能.开始之前需要源码同学可以先在git上fork:https://github.com/stoneniqiu/R ...

  2. Asp.Net Form验证不通过,重复登录

    问题产生根源: 当然,其实应该需要保持线上所有机器环境一致!可是,写了一个小程序.使用的是4.5,aysnc/await实在太好用了,真心不想把代码修改回去. so,动了念头,在这台服务器上装个4.5 ...

  3. tornado web高级开发项目之抽屉官网的页面登陆验证、form验证、点赞、评论、文章分页处理、发送邮箱验证码、登陆验证码、注册、发布文章、上传图片

    本博文将一步步带领你实现抽屉官网的各种功能:包括登陆.注册.发送邮箱验证码.登陆验证码.页面登陆验证.发布文章.上传图片.form验证.点赞.评论.文章分页处理以及基于tornado的后端和ajax的 ...

  4. form验证及图片上传

    form验证及图片上传 这一节增加推荐图书的提交和删除功能,来学习node的form提交以及node的图片上传功能.开始之前需要源码同学可以先在git上fork:https://github.com/ ...

  5. angular实现form验证

    先上效果页面:https://lpdong.github.io/myForm-1/ 其中几个知识点 1.angularJs提供了几个新的type类型: type="password" ...

  6. Python Django的分页,Form验证,中间件

    本节内容 Django的分页 Form 中间件 1 Django 分页 1.1 Django自带的分页 1.首先来看下我的测试数据环境 ############ models.py ######### ...

  7. Django中Form验证

    Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 一,Form验证 第一种操作:主要是这三个函数 ...

  8. Django form验证

    # 模版 class LoginForm(forms.Form): # 模版中的元素 user = forms.CharField(min_length=6,error_messages={" ...

  9. python自动化开发-[第二十一天]-form验证,中间件,缓存,信号,admin后台

    今日概要: 1.form表单进阶 2.中间件 3.缓存 4.信号 5.admin后台 上节课回顾 FBV,CBV 序列化 - Django内置 - json.dumps(xxx,cls=) Form验 ...

  10. [py][mx]django form验证-给db减压

    django form认证-解压db压力 一般系统都需要前后端都验证 前端验证容器逃逸破解,如通过js console口去发 试想如果后端只有db验证,那么前端无论发什么后端都查询一次db,对db压力 ...

随机推荐

  1. Qt项目下pro文件设置库路径

    问题 正常情况下我们会将工程的路径用一个变量来储存 例如: PROJECT_DIR=/home/$$(USER)/svn/embd_linux/app 然后后面的变量引用这个变量,例如: INCLUD ...

  2. 微信小程序单击事件与长按事件冲突的解决办法

    众所周知,在小程序中,长按事件一松手是会触发单击事件的,而在我们的实际需求中,往往是需要单击事件和长按事件并存的. 然而,小程序却又好像想到了这种情况似的,给了我们一个触摸开始,一个触摸结束 也就是, ...

  3. Hive - [08] 数据仓库物理模型设计

    分区 分区是将表的数据按照某个列的值进行划分和存储的一种方式.通过分区,可以将数据按照特定的维度进行组织,提高查询效率和数据管理的灵活性. 一.分区的优势 提高查询性能:通过分区,可以将数据按照特定的 ...

  4. Ansible - [02] 基础配置以及常用操作场景

    Ansible 基础配置 主配置文件:/etc/ansible/ansible.cfg ansible配置文件查找顺序 首先检测ANSIBLE_CONFIG变量定义的配置 其次检查当前目录下的./an ...

  5. spark-shell启动报错

    Spark On Hive 配置步骤在Spark客户端安装包下的conf目录中创建文件hive-site.xml,配置hive的metastore路径 <configuration> &l ...

  6. MAMP PRO教程

    简单使用 第一步 创建新主机,按主机表左下角的"+"按钮. 第二步 配置域名和项目地址 第三步 选择你要使用的web服务器 第四步 配置URL重写规则 第五步 检查端口号 第六步 ...

  7. 【Azure Fabric Service】演示使用PowerShell命令部署SF应用程序(.NET)

    问题描述 在中国区微软云Azure上使用Service Fabrics服务,本地通过Visual Studio 2022的发布.NET应用,发现无法发布! 在搜寻官方文档之后,可以通过PowerShe ...

  8. 归并排序(递归)(NB)

    博客地址:https://www.cnblogs.com/zylyehuo/ 递归思路 # _*_coding:utf-8_*_ import random def merge(li, low, mi ...

  9. 【消息利器RabbitMQ】RabbitMQ常用内容浅析

    以下是一篇关于 RabbitMQ 的博客内容,涵盖了从基础到死信队列的实现,以及 RabbitMQ 其他常用知识点的补充.内容逻辑清晰,代码完整,适合直接发布. 使用 RabbitMQ 实现消息队列与 ...

  10. 区块链特辑——solidity语言基础(一)

    Solidity语法基础学习 一.智能合约的结构: 首先以上是智能合约的结构,包含版权宣告.编译指示.Using for 宣告.错误定义.输入.列举与枚举.常数.合约.函数.注释.第一个注释不同于其他 ...