模板、cookie\session、中间件、MTV和MVC

模板

基本数据类型的渲染

变量
<h2>基本数据类型的渲染</h2>
    <h3>基本变量的渲染:{{ name }}</h3>
列表(点方法)
<ul>
        <li>{{ myli.0 }}</li>
        <li>{{ myli.1 }}</li>
        <li>{{ myli.2 }}</li>
    </ul>
字典(点方法)
<ul>
        <li>{{ mydict.name }}</li>
        <li>{{ mydict.age }}</li>
    </ul>
列表中套字典(for循环加点方法)
<ul>
        {% for mydic in teacher%}
        <li>{{ mydict.name }}</li>
        <li>{{ mydict.age }}</li>
        {% endfor %}
    </ul>

母版子板

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()

html:
{{ name|upper }}
    {{ name|lower }}
    {{ name|first|upper }}
    {{ name|title }}
    {{ name|truncatewords:'2' }}
    <hr>
    {{ ctime|date:"Y-m-d H:i:s" }}

    <hr>
        {{ name|my_func:'kkkk'}}
    <hr>
        {% my_tag 'zekai' 'is' 'jjj' %}

自定义函数

配置:
    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' %}     

cookie和session

1659176-20190718213236438-322124668.png

原理:
- 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值
request.session.get('name')
# 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()

设置超时时间:
set_expire()
     
# 检查 用户session的随机字符串 在数据库中是否
request.session.exists("session_key")

     
# 删除当前用户的所有Session数据
request.session.delete("session_key")
request.session.clear()
request.session.flush()
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

中间件 (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黑名单中的值

    MTV 和 MVC

    1659176-20190718213423701-1800137615.png

```
MVC:

项目目录结构的设计模式

客户 ------点餐--------> 服务员 ------处理菜单需求--------> 厨师
<------------------ <-------------------------

(浏览器) -------------------> 函数或者类处理 ------------------> 数据库
业务逻辑
views: controllers models:
loginController.py LoginModel.py
UserController.py UserModel.py
大量html页面

MVC

django:
M : models
T : Templates (各种html页面) 相当于views
V :Views(视图处理函数) 相当于 controllers
```1659176-20190718213530885-380942670.png

转载于:https://www.cnblogs.com/huanghongzheng/p/11210140.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值