1. djagno ORM 数据列类型
mysql djagno
int interfiled
参数:
null : true
default : 设置默认值
max_length: 最大长度
unique: 唯一索引
联合唯一索引:
class Meta:
unique_together = (
("id", ‘name‘)
)
普通联合索引:
class Meta:
index_together = (
("id", ‘name‘)
)
db_index : 设置普通索引
db_column: 设置列名
2. Djagno admin 列类型:
EmailFiled: 验证邮箱是否正确
fileFiled: 验证文件是否上传
。。。。。
参数:
blank: True、false
versobse_name: 显示字段名
editable Admin中是否可以编辑
help_text Admin中该字段的提示信息
choices Admin中显示选择框的内容,用不变动的数据放在内存中从而避免跨表操作
choices = (
(1, ‘男‘),
(2, ‘女‘)
)
gender = models.IntegerField(choices=chocies)
3. 分页:
内置的分页:
paginator
缺点:
页码只能全部显示
自定制分页:
1. models.xxxx.objects.all()[start:stop]
2. 判断极值
最左边:
half
最右边:
half
ps:
自己用过的分页工具:
1. class类
2. dataTables (https://datatables.net)
4. CSRF:
settings:
MIDDLEWARE = [
‘django.middleware.security.SecurityMiddleware‘,
‘django.contrib.sessions.middleware.SessionMiddleware‘,
‘django.middleware.common.CommonMiddleware‘,
‘django.middleware.csrf.CsrfViewMiddleware‘,
‘django.contrib.auth.middleware.AuthenticationMiddleware‘,
‘django.contrib.messages.middleware.MessageMiddleware‘,
‘django.middleware.clickjacking.XFrameOptionsMiddleware‘,
]
@csrf_exempt @csrf_protect
今天内容:
1. 模板 (永远是渲染页面的作用)
- 基本数据类型 渲染
a. 变量
b. 列表
c。 字典
d。列表中套字典
- 母版
layout.html 布局页面
{%block mycss%}
{%endblock%}
子版继承:
{% extends “layout.html”%}
{%block mycss%}
link
script src
{%endblock%}
- 导入
自己写了一个非常漂亮的 html 代码 (html页面)
{% include “html页面” %}
- 内置函数
python:
str = “zekai”
str.upper()
str.lower()
母版语言:
- 自定义函数
配置:
a、在app中创建templatetags模块
b. 创建xx.py
- simple_filter:
from django import template
register = template.Library()
@register.filter()
def my_func(val, arg1):
return val + arg1
注意:
1. 只能传入一个参数
2. 函数名和参数之间不能有空格
用法 :
{% load xx %}
{{ name|my_func:‘kkkk‘}}
- simple_tag:
from django import template
register = template.Library()
@register.simple_tag()
def my_func(val, arg1):
return val + arg1
用法:
{% load xx %}
{% my_tag ‘zekai‘ ‘is‘ ‘jjj‘ %}
2. cookie和session (********************************)
原理:
- cookie:
存在于客户端浏览器的一个key-val的随机字符串(键值对)
服务端返回的
{"键": cookie值}
- session
存在于服务端的包含用户敏感信息的键值对
{
“cookie值” : {“name”:‘zekai’, ‘age‘:18},
“cookie值1” : {“name”:‘zekai2’, ‘age‘:34},
“cookie值2” : {“name”:‘zekai3’, ‘age‘:45},
“cookie值3” : {“name”:‘zekai4’, ‘age‘:56},
}
具体使用:
### 获取session
### 查询session值
# print(request.session.keys()) ### dict_keys([‘name‘, ‘pwd‘, ‘age‘])
# print(request.session.values()) ### dict_values([‘zekai‘, ‘123‘, 12])
# print(request.session.items()) ### dict_items([(‘name‘, ‘zekai‘), (‘pwd‘, ‘123‘), (‘age‘, 12)])
### 设置session值
request.session[‘name‘] = username
request.session[‘pwd‘] = pwd
request.session[‘age‘] = 12
# 用户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失效策略。
可以使用的存储介质:
1. SESSION_ENGINE = ‘django.contrib.sessions.backends.db‘ # 引擎(默认)
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 # 是
2. SESSION_ENGINE = ‘django.contrib.sessions.backends.cache‘ # 引擎
SESSION_CACHE_ALIAS = ‘default‘ # 使用的缓存别名(默认内存缓存,也可以是memcache),此处别名依赖缓存的设置
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 #
3. SESSION_ENGINE = ‘django.contrib.sessions.backends.file‘ # 引擎
SESSION_FILE_PATH = None # 缓存文件路径,如果为None,则使用tempfile模块获取一个临时地址tempfile.gettempdir() # 如:/var/folders/d3/j9tj0gz93dg06bmwxmhh6_xm0000gn/T
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
4. 配置 settings.py
SESSION_ENGINE = ‘django.contrib.sessions.backends.cached_db‘ #
##分布式session存储
补充:
关系型数据库:(基于硬盘的)
sqllite mysql oracle db2
菲关系型数据库:(基于内存的)
redis, mongdb, memcahce
3. 中间件 (django的请求生命周期)
- class 类
- process_request : 请求必经的一个方法
- process_response: 这个响应必经的一个方法
- process_view
- settings:
MIDDLEWARE = [
‘django.middleware.security.SecurityMiddleware‘,
‘django.contrib.sessions.middleware.SessionMiddleware‘,
‘django.middleware.common.CommonMiddleware‘,
‘django.middleware.csrf.CsrfViewMiddleware‘,
‘django.contrib.auth.middleware.AuthenticationMiddleware‘,
‘django.contrib.messages.middleware.MessageMiddleware‘,
‘django.middleware.clickjacking.XFrameOptionsMiddleware‘,
‘m1.M1‘,
‘m2.M2‘
]
- 应用:
做预处理的时候, 将代码写 在中间件中
判断是否是IP黑名单中的值
.....
4. MTV 和 MVC
MVC:
项目目录结构的设计模式
客户 ------点餐--------> 服务员 ------处理菜单需求--------> 厨师
<------------------ <-------------------------
(浏览器) -------------------> 函数或者类处理 ------------------> 数据库
业务逻辑
views: controllers models:
loginController.py LoginModel.py
UserController.py UserModel.py
大量html页面
MVC
django:
M : models
T : Templates (各种html页面) 相当于views
V :Views(视图处理函数) 相当于 controllers
第四十六章:session 验证
原文:https://www.cnblogs.com/haojunliancheng/p/11209778.html