资讯专栏INFORMATION COLUMN

4-django——模板

yibinnn / 3072人阅读

摘要:概述定义模板变量要遵守标识符规则语法在模板中使用点语法,按顺序查询字典查询属性或者方法查询数字索引查询如果使用的变量不存在,则插入空字符串在模板中调用对象的方法,但是不能给函数传参示例标签语法作用在输出中创建文本控制逻辑或循环加载外

概述

定义模板 变量
要遵守标识符规则

语法: {{ var }}

在模板中使用点语法,按顺序查询:字典查询;属性或者方法查询;数字索引查询

如果使用的变量不存在,则插入空字符串

在模板中调用对象的方法,但是不能给函数传参

示例


    

sunck is a good man

he is {{ age }} years old

{{ stu.name }}--{{ stu.age }}--{{ stu.grade }}

*{{ name }}*

{{ stu.say }}

标签
语法:{% tag %}

作用: 在输出中创建文本;控制逻辑或循环;加载外部信息到模板中使用

if

{% if 表达式 %}
语句
{% endif %}

{% if 表达式 %}
语句1
{% else %}
语句2
{% endif %}

{% if 表达式1 %}
语句1
{% elif 表达式2 %}
语句2
{% elif 表达式3 %}
语句3
……
{% else %}
语句e



    

sunck is a handsome man!

{% if age > 18 %}

sunck is a nice man

{% else %}

sunck is a good man

{% endif %} {% endif %}

for

{% for 变量 in 集合 %}
语句
{% endfor %}

{% for 变量 in 集合 %}
语句1
{% empty %}
语句2

# 当没有该集合或者集合为空的时候执行empty标签下的语句2
    {% for stu in stus %}
  • {{ stu.name }}--{{ stu.age }}
  • {% empty %}
  • 没有学生
  • {% endfor %}
{% endfor %}

comment

作用 : 注释   单行注释({#

sunck is a handsome man!

#}) 多行注释
{% comment %}
注释内容
{% endcomment%}
# 可以注释HTML代码和逻辑控制代码

ifequal/ifnotequal

作用: 判断是否相等/不相等

# 如果值1等于值2,则执行语句
{% ifequal 值1 值2 %}
语句
{% endequal %}

# 如果值1不等于值2,则执行语句
{% ifnotequal 值1 值2 %}
语句
{% endequal %}

include

作用: 加载模板

格式: {% include "模板目录" %}

示例: {% include "t1.html" %}

url

作用:用于反向解析

格式: {% url "namespace:name" 参数1 参数2 …… %}

csrf_token

作用:用于跨站请求伪造保护

格式:{% csrf_token %}

block、extends

作用:用于继承

autoescape

作用:用于HTML转义

过滤器

作用: 在变量被显示之前修改它的显示

语法: {{ 变量|过滤器 }}

简单过滤器: lower upper

{{ des }}

{{ des|lower }}

{{ des }}

过滤器可传参,参数用引号引起来

join:

{{ arr|join:"#" }}

如果一个变量没有提供或者值为False或者值为空,则可以使用默认值,否则使用变量的值

default:

{{ name|default:"sunck" }}

根据给定格式对一个date变量格式化显示

date :

{{ value|date:"Y-m-d" }}

加减乘除

{{ age|add:2 }}

{{ age|add:-2 }}

{# widthratio 参数1 参数2 参数3 #} {# 参数1/参数2*参数3 #}

{% widthratio age 1 2 %}

{% widthratio age 2 1 %}

转义: escape;safe

自定义过滤器

过滤器就是python的函数,可以注册函数后在模板中当过滤器调用

# 在应用目录下创建名为templatetags的包
# 在templatetags目录下创建名为filters.py的文件
# -*- coding:utf-8 -*-

#导入Library库
from django.template import Library

#创建一个Library对象
register = Library()

#定义函数
#使用装饰器注册成过滤器
@register.filter
def even(value):
    return value % 2 == 0

@register.filter
def sub(value, othre):
    return value - othre
# 使用自定义过滤器
{% load filters %}

{{ 19|sub:9 }}
{% if 19|even %}

********************1

{% else %}

********************2

{% endif %}
反向解析

主路由:url(r"^", include("myApp.urls", namespace="myApp")),

子路由:url(r"^market2/$", views.market, name="market")

模板 : 点我跳转

模板继承

作用: 模板继承可以减少页面内容的冲定义,实现页面内容的重用

block标签: 在父模板中预留区域,在子模板中填充

extends标签: 实现继承,写在模板文件的第一行




    
    {% block title %}{% endblock title %}

    {% block link %}{% endblock link %}
    {% block script %}{% endblock script %}


    
{% block main %} {% endblock main %}
{% extends "base.html" %}

{% block title %}child1{% endblock title %}

{% block main %}

child1

{% endblock main %}
HTML转义

Django默认开启了HTML转义

def login(request):
    if request.method == "GET":
        # infoStr = "

sunck is a good man

" infoStr = "" return render(request, "login.html", {"infoStr":infoStr})



    
    登陆


{% autoescape off %}
    {{ infoStr }}
    {{ infoStr|safe }}
    {{ infoStr|escape }}
{% endautoescape %}
    
账号:
密码:
CSRF

跨站请求伪造保护: 某些恶意网站上包含链接、表单按钮或者JavaScript,它们会利用登陆过的用户信息试图在我们的网站上完成某些操作,这就是跨站攻击

防止CSRF

# 在settings.py中启用""django.middleware.csrf.CsrfViewMiddleware","中间件,工程中默认开启
# 开启保护后不论是自己还是别人都会被屏蔽



    
    登陆


    
{% csrf_token %} 账号:
密码:

{% csrf_token %}: 给表单页面生成一个隐藏域;写入一个名为csrftoken的cookie;给隐藏域的value设置为名为csrftoken的cookie的值;

静态文件

包含工程中的css、js、img、json等文件

在工程目下创建名为static的目录用以存储静态文件

配置静态文件路径

# settings.py
STATIC_URL = "/static/"
STATICFILES_DIRS=[
    os.path.join(BASE_DIR, "static"),
]
{#{% load static from staticfiles %}#}
{% load static %}



    
    主页

{#    #}
    


    

sunck is a good man

5-django——验证码,中间件

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/41966.html

相关文章

  • 使用PyCharm创建Django项目及基本配置

    摘要:是个很不错的开发工具,大大缩短了项目的创建时间以及调试时间在使用写脚本一段时间后,想尝试使用来编写一个项目,现做以下记录备忘创建项目如果本地没有安装与所选版本对应版本,会自动下载相应的版本创建后运行项目,默认页面为,打开后出现上面的页面,则 pycharm是个很不错的python开发工具,大大缩短了python项目的创建时间以及调试时间在使用python写脚本一段时间后,想尝试使用Dj...

    toddmark 评论0 收藏0
  • Django添加全文搜索功能入门篇

    摘要:转载说明来源添加全文搜索功能入门一使用的工具是的开源搜索框架,该框架支持搜索引擎,不用更改代码,直接切换引擎,减少代码量。修改如下添加修改为如下第二步在中修改引擎,如下第三步重建索引,在进行搜索中文试试吧。 感觉网络上关于Django全文搜索的中文文章太少,并且讲的也不是很到位,就是简单介绍了怎么配置,并没有说这样配置有什么用,所以依然很迷茫。所以希望我这篇文章能够帮助到后来人。 转...

    lookSomeone 评论0 收藏0
  • Python学习之路19-设置应用程序的样式并对其进行部署

    摘要:删除的全部代码,并添加如下代码第行使用了的一个自定义模板标签,它让包含所有的样式文件。只修改了样式,并没有修改代码。 《Python编程:从入门到实践》笔记。本篇将对Django项目做最后的完善。本篇也是这本书的最后一篇。 1. 前言 在本篇中,我们将: 使用Bootstrap库设置样式; 把项目部署到Heroku上。 2. 设置项目学习笔记的样式 之前关注的都是项目的功能,现在来...

    陈伟 评论0 收藏0
  • 3-django——视图

    摘要:概述作用视图接收请求并返回响应本质视图就是一个函数,被定义在文件中响应可以是一个页面,一个重定向,一个错误一个数据等等过程视图函数对象概述服务器接收到协议的请求后,会根据报文创建对象视图函数的一个形参就是对象属性方法如果请求是通过类发起的, 概述 作用:视图接收WEB请求并返回WEB响应本质: 视图就是一个python函数,被定义在views.py文件中 响应: 可以是一个HTML页面...

    dinfer 评论0 收藏0
  • 个人博客四|注册登录退出功能后台开发

    摘要:声明本博客的注册登录退出功能将使用,参考资源如下文档教程安装配置信息安装后设置,将相关加入到里去。指定与特定配置文件相关联的对象之数据库的。因此并没有提供用户详情应用用户详情请参考个人博客五用户个人资料扩展 声明:本博客的注册登录退出功能将使用django-allauth,参考资源如下:django-allauth文档django-allauth教程 1、安装django-allau...

    Darkgel 评论0 收藏0

发表评论

0条评论

yibinnn

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<