Django11

上节回顾:

  -数据库操作

      -models.py

        class Foo:

          xx=字段(数据库数据类型)

    操作

      -增删改查

      -filter(),update(),create()  可以关键字参数,也可以字典

      -all()  values()  values_list()

      -FK

        正向:

          filter()  values  ,values_list  -->fk__xxx

          objs = all()

          for row  in objs:

              obj.fk.字段

        反向:

          filter()  values  ,values_list  -->fk__xxx

           objs = all()

          for obj in objs:

            obj.类小写名称_set.all()

      -ManyToMany

        第三张表自己写,  ManyToMany  结合

         正向(有MTM)

          obj.m.add()

          obj.m.remove()

          m.set()

          m.clear()

          m.all()

          m.filter()

        反向:

          obj.表名_set.add

 

      

  -CSRF:  POST时,需要用户携带随机字符

    -Form

      -{% csrf_token %}

    -Ajax

      -data

      -cookie中获取,添加到请求头  header:{}

  -XSS:

    -不用safe,不用mark_safe

    -过滤关键字

  -Cookie

    -放在用户浏览器端的键值对

    -可以放很多,但对于敏感信息不放。

*********************************************补充*********************************

创建超级用户:python manage.py create superusr 

在app01中的admin.py注册那个model

from app01 import models

admin.site register(models.UserInfor)

字符串类(做一些正则表达式验证,给admin验证的):

字段的类型

数据库中还是字符串

EmailField(CharField):
IPAddressField(Field)
 URLField(CharField)
UUIDField(Field)
FileField(Field)
FilePathField(Field)
ImageField(FileField)
 SlugField(CharField)
CommaSeparatedIntegerField(CharField)

a.这些字段,在我们自己直接通过
  models.UserIfo.objects.create(....)毫无影响
  --ModelForm(之后可能可盈应用的模块)
b.影响Django自带的管理工具admin


时间类型
    DateTimeField(DateField)
        - 日期+时间格式 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]

    DateField(DateTimeCheckMixin, Field)
        - 日期格式      YYYY-MM-DD


数字类型
  
IntegerField(Field)
FloatField(Field)
DecimalField(Field)
            max_digits,小数总长度
            decimal_places,小数位长度

枚举(django)
  color_list = ((1,'黑色'),(2,'白色'),(3,'蓝色'))
color = models.IntegerField(choices=color_list)
1.自己操作:
  自己取,自己用
2.给django admin使用
应用场景:选项固定
    PS:FK选项动态

字段的参数
max_length = 32
primary_key = True
null=True
default='1111'
db_index=True
unique=True
unique_for_date  对于时间的索引
class Meta():
    联合唯一索引
    unique_together = [('b','g'),]
    
    联合索引
    index_together=(('email','ctime'),)

django admin
的参数


考虑django admin
  字段:
  做正则验证
    邮箱,IP,URL,
  参数:
  blank
  error_message{}
validators={
自定义正则
}

今日内容

  1.模板

  2.中间件

  3.Session 

 

  1.模板

    -母板  一个子板只能继承一个母板,整个页面去继承

    -include  小组件,导入小组件,在html中写,{%include ‘pub.html’%}

 include,extence   再找到模板。渲染之前,先找到相关联的模板,组件进行替换。再进行渲染。

    -函数  --》自动执行  {% for row in userinfo.values%}  userinfo.keys  但是没有参数

    -模板自定义函数:

      -simple_filter  在模板中是前后写的,的函数最多传入两个参数,并且在html中不能有空格

      优势:他可以作为条件语句放到html模板中渲染  {{第一个参数|函数名称:‘第二个参数’}}

    

      -simple_tag  

        -无限制:{% 函数名 参数 参数%}中间空格隔开    应用:之前讲的反向生成URL

  

      

 2.Session

    cookie是什么

      保存在客户端浏览器上的键值对

    session是什么

      保存在服务器端的数据(本质是键值对)

      应用:依赖cookie

      作用:保持会话(web网站)

      好处:敏感信息不会直接给客户

   

  1生成随机字符串  (随机字符串是用户的唯一标识)

  2.通过cookie发送给客户端

  3.服务端保存

    {随机字符串:{‘username’,'castiel','email':'xxx'}}

  requset.session['username'] = 'castiel'

 

 

  1.获取客户端cookie中的随机字符串

  2去session中查找有没有随机字符串

  3.取session对用的key的values中查看是否有username

  request.session.get('username')

      

session使用以及配置

http://www.cnblogs.com/wupeiqi/articles/5246483.html

 

session数据源配置

 

梳理:

  1.保存在服务器端的数据(本质是键值对)

  2.配置文件中:

    -存储位置

    -超时时间,每次刷新跟新时间

  3.

    request.session

    -增删改

    -获取随机字符串

    -主动设置超时时间。

 

今日作业:相亲网

  1.登录,基于session,装饰器

  

posted on 2018-09-07 17:27  castiel_lee  阅读(76)  评论(0)    收藏  举报

导航