第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定

django模板詳解(二)

標(biāo)簽:
JavaScript

1 总体结构

Django是MTV结构,即:Model, Template, View
       Model:定义数据的存储格式,并且提供了数据库访问的API。
       View:定义那些数据被显示,是业务逻辑处理模块。
       Template:定义数据如何被显示。
       Django工程包含工程的配置、及多个APP,每个APP完成相对独立的功能。在设计中,要尽量保持每个APP的独立性,以做到APP是即插即用。

2 各个模块的交互关系

Django收到HTTP请求后,依次完成下列处理:
       根据URL通过URLConf模块映射到View函数,将HttpRequest对象作为参数传入。
       在View函数中,获取HTTP请求的参数,通过Model访问数据库,进行业务逻辑运算得到输出数据。
       然后,加载Template,根据输出数据生成页面,将HttpResponse对象返回。

3 模板概述

#模板处理过程:1. 模板加载2. 模板渲染#模板包含两个部分:3. 原始的html⻚⾯4. 模板语法标记的内容(标记语言)#模板引擎就是把模板语法标记的内容,替换成导⼊到模板引擎的数据
   render(request, 模板名称,传递给模板渲染的字典)
   render返回的是HttpResponse对象
   render的中间结果就是⼀个字符串,然后⽤该字符串创建HttpResponse对象

4 定义模板

(1)变量
语法:{{变量名}}  {{ var }}
字典查询{{'student':students}}
属性与方法{{stu.sname}}

(2)标签
语法: {%tag%} 标签
格式:if语句
{%  if 表达式1 %}
语句1{% elif表达式2 %}
语句2{% endif %}  

格式:for语句
格式{% for 变量 in 列表 %}
语句1{% empty %}  #当列表为空或不存在时执行语句2语句2{% endfor %}  

(3)comment 多行注释
{% comment %}
注释内容
{% endcomment %}    多行注释

(4)ifqual/ifnotequal  判断是否相等
作用 : 判断是否相等或者不相等
格式 : {% ifequal 值1 值2 %} #如果值1=值2则执行
      {% endifequal %}

(5) 其他功能
include
作用 : 加载模板并以标签内的参数渲染
格式 : {% include  '模板目录'  参数1  参数2%}

url作用反向解析格式 : {% url 'namespace:name'  p1 p2 %}

csrf_token作用: 用于跨站请求伪造保护
格式: {% csrf_token %}

block/extends作用 : 用于模板的继承    
autoescape: 作用用于html的转义

循环forloop常见的功能:

循环类型说明
{{ forloop.counter0}}表示当前是第⼏次循环,从0数数
{{ forloop.revcounter}}表示当前是第⼏次循环,倒着数数,到1停
{{ forloop.revcounter0}}表示当前第⼏次循环,倒着数,到0停
{{ forloop.last }}布尔值是否是最后⼀个 布尔值
{{ forloop.first }}是否是第⼀个
{{ forloop.counter }}表示当前是第⼏次循环,从1数数
#例子data={“values”:range(10)}
{% for value in values %}
{{value}}//forloop.count {{forloop.count}}
{% endfor %}

5 过滤器

    1 语法
        {{ var过滤器 }}
    作用
        在变量被显示前修改它
            {{ str | upper}}    2 过滤器可以传递参数,参数用引号引起
        join
            格式
                列表|join:'#'
                {{list|join:'#'}}   列表数据以#号连接
    3 如果一个变量没有被提供,或者值为false/空,可以使用默认值
        default 
            格式
                {{var|default:'值'}}
            实例
                {{test|default:'没有'}}  没有默认显示没有    4 根据给定格式转换日期为字符串
        date
            格式
                {{ dateVal|date:'y-m-d' }}    5 HTML转义
        escape    6 加减乘除
        {{num|add:10}}
        {{num|add:-5}}
        {% widthratio num 1 5%}}
            计算方法num/1*5
        {% widthratio num 2 1%}
            计算方法num/2*1

6 反向解析

#urls.py根路由urlpatterns = [
    url(r'^sunck/',include('myApp.urls',namespace='app'))
]#myApp urls.pyurlpatterns = [
    url(r'^good/(\d+)/(\d+)/$',views.good,name='good'),
]#index.html<a href=' '>
<a href='{% url 'app:good' 1 2 %}'>   第一页 下第二条

7 模板继承

1 作用
    模板继承可以减少页面的重复,父模板base.html2 block标签
    在父模版中预留区域,子模板去填充
    {% block 标签名 %}3 子模板填充
{% endblock 标签名 %}
extends标签
    继承模板,需要写在模板文件的第一行
    {% extends '父模板路径' %}
    {% extends 'myApp/base.html' %}   引入父模板路径#4 实例  base.html    定义父模板
    <div id='main'>
        {% block main %}
        {% endblock  main%}
        <hr/>
        {% block main2 %}
        {% endblock main2 %}        
    </div># main.html    定义子模板
    {% entends 'myApp/base.html' %}

    {% block mian %}
        <h1>sunck is a good man<h1/>
    {% endblock main %}

    {% block mian2%}
        <h1>kaige is a good man<h1/>
    {% endblock main %}
HTML转义
    作用将受到的字符串当成HTML代码渲染
    转义
        单个转义
            {{ <h1>sunck is a good man</h1>|safe }}
        多个转义
           {% autoescape off %}
            {{<h1>sunck is a good man</h1>}}
            {% endautoescape %}

9 CSRF验证

CSRF
    跨站请求伪造
        防护恶意网站:链接,表单,按钮,利用登录用户在浏览器中认证从而攻击服务
    防止CSRF
        在settings中启用
        表单过验证  {{crsf_token}}
        在view.py中引入from django.views.decorators.csrf import csrf_exempt
在对应的提交函数中
添加@csrf_exempt#附中间件模块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',
]

10 静态资源的访问

1. ⼯程下建⽴static⽂件夹2. settings⾥⾯设置
   STATICFILES_DIRS=[os.path.join(BASE_DIR,’static’)]3. 在模板中可以直接使⽤{% load static %} <link href=“{%
   static 资源位置 %}“>
   模板中去访问静态资源4. 加载静态资源模块5. src=“{% static 资源位置 %}”URL配置
   r’/index/(?P<page_id>\d+)/(?P<anchor>\w+)’
   re.findall(r’/index/(?P<page_id>\d+)/(?P<anchor>\w+)’,’/index/12341234/
   asdfSDADH,.14387,./,')
   处理函数使⽤固定位置来接收参数

原文出处

點(diǎn)擊查看更多內(nèi)容
1人點(diǎn)贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報(bào)

0/150
提交
取消