1、Django数据库mode操作字段

 

url admin 创建用户密码:
 python manage.py createsuperuser

admin 用户管理数据库 操作:
admin.py 文件:
 from app01 import models
 admin site.register(models.UserInfo) # 注册表

以下字段在 admin 管理工具里才会有特殊限制效果。 mysql直接操作属于字符串
 EmailField
 IPAddressField
 URLField
 SlugField
 UUIDField
 FilePathField
 FileField
 ImageField
 CommaSeparatedIntegerField

枚举(Django)
 color_list = (
   (1,'黑色'),
   (2,'白色'),
   (3,'蓝色')
 )
 color = models.IntegerField(choices=color_list)


#                             是否为空,默认为111,      普通索引,    唯一索引,    Django admin管理工具里内容可以为空
# username = models.CharField(null=True,default='111',db_index=True,unique=True,blank=True)
相关参数:
 verbose_name  admin 中显示的字段名称
 blank  admin 中是否允许用户输入为空
 editable  admin 中是否可以编辑
 help_text     admin 中该字段的提示信息
 choices   admin中显示选择框的内容,用不变动的数据放在内存中从而避免跨表操作
 error_messages    自定义错误信息(字典类型) 字典键:null,blank,invalid,invalid_choice,unique,and,unique_for_date
 validators    自定义错误验证(列表类型)

 

 

2、模板引擎

 

部分方法:
例:<div>{{ name|upper }}</div>

自定义函数方法:  simple_filter 和 simple_tag
 1、在app中创建templatetags模块 (目录)  前提:settings里已经注册了APP
 2、创建任意 .py 文件 (用来写自定义函数)
 3、文件导入模板:from django import template
 4、register = template.Library() # 变量名不可改
 5、写函数
   @register.filter  # 必须加上装饰器
   def my_upper(value):
       return value.upper()
 6、使用。在html文件顶头加载文件 {% load 文件名 %}

 simple_filter:  {{ name|my_upper:"参数2" }} # 参数最多传两个,可配合if判断使用
 simple_tag:   {% my_lower "参数1","参数2","参数3" … %} # 参数无限制,不可配合if判断使用

include
 写一个小组件放到静态资源目录(html格式的一个重复使用小功能),例名为:pub.html
 在 主 html页面里可以直接在需要使用的位置:{% include 'pub.html' %}

 

 

3、session

 

session  保存在服务器端的数据。
 应用:依赖cookie
 作用:保持会话(web网站)
 好处:敏感信息不会直接给客户端

自动生成随机字符串、并发给客户端cookie保存、并保存在服务端session
 request.session['key'] = value  # 就等同于 随机字符串1:["key":"value",]

获取客户端cookie中随机字符串、并去session中查找有随机字符串、并查找session中对应的key的value是否有值
 ret = request.session.get("key")
 if ret:
   return HttpResponse("ok")
 else:
   return redirect('/login/')

session 获取、设置、删除  数据
获取值:
 request.session['key'] # 不存在则报错
 request.seesion.get('key',None) # 不存在不会报错,默认返回None

 request.session.keys() # 获取key
 request.session.values() # 获取values
 request.session.items() # 获取key,values
 request.session.iterkeys() # 迭代器类型
 request.session.itervalues() # 迭代器类型
 request.session.iteritems() # 迭代器类型


设置值:
 request.session['key'] = value # value值存在则覆盖
 request.session('key','value') # value值存在则不设置

删除值:
 del request.session['key'] # 删除服务端的session value值

获取客户端随机字符串
 request.session.session_key

删除当前用户在服务器端的session数据
 request.session.delete ('随机字符串')

删除当前用户的coocik数据(立即设置超时)
 request.session.clear()

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

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

设置 客户端 和 服务器端 的 session 超时时间。(客户端浏览器默认两周)
 request.session.set_expiry(秒) # 如果是0秒,及用户关闭浏览器session就会失效


session 默认配置: 需要修改时可写到 settings.py  静态资源配置:static 下
 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,默认修改之后才保存


Django 中默认支持session ,内部提供了 5种类型 的 session 供开发者使用:
 数据库(默认)  SESSION_ENGINE = 'django.contrib.sessions.backends.db'

 缓存  SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
      SESSION_CACHE_ALIAS = 'default'  # 使用的缓存别名(默认内存缓存)

 文件  SESSION_ENGINE = 'django.contrib.sessions.backends.file'
      SESSION_FILE_PATH = None  # 缓存文件路径。如果为None,则使用tempfile模块获取一个临时地址 tempfile.gettempdir()

 缓存+数据库  SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'  优先去缓存中获取数据,缓存中没有才会去数据库获取

 加密cookie  SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies' # 类似签名cookie