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