django中的templates和views

本文介绍了Django框架中的templates和views。templates部分详细讲解了模板文件的分类,如静态html和模板html,以及模板语法,包括变量、标签和过滤器的使用。views部分阐述了视图函数的作用,如何通过urls.py进行路由分发,以及如何接收和处理参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

templates

MTV中的Template

充当数据展示的角色

在Django中使用的就是Django模块

模板文件分为静态html和模板html

静态资源

使用的时候注意在settings中配置静态资源文件的位置
STATICFILES_DIRS
在模板html文件中使用静态资源
使用{% loadstatic %}
{% static ‘相对路径’ %}

模板html文件中的语法:

  1. 变量:
    变量名遵循命名规则

    从django中往模板html文件里传值:
    将数据以字典的形式放在响应中返回即可

    在模板html文件中接收变量:
    {{ var }}
    在两个大括号内填入传来变量字典中的key,在展示时就是展示字典的value值

  2. 标签
    标签格式:{% exp %}
    标签分为单标签和双标签,双标签必须闭合

    模板语法中的结构标签:

     block:  {% block b_name %}  # b_name:为区域命名,方便引用
     	块,坑
     	用来规划,填充页面
     首次使用代表规划
     第二次使用代表填坑
     第三次及以后使用也代表填坑,默认是覆盖操作
     
     extends  {% extends 'xxx.html' %}  # xxx.html:需要继承的html文件
     	继承
     	面向对象的体现
     	提高模板的复用率
     	
     include  {% include 'xxx.html' %}  # xxx.html:需要被包含的html文件
     	包含
     	将其他模板作为一部分,包裹到我们的页面中
    
     block+extends
     	化整为零
     
     include+xxx
     	由零聚一
    

    模板语法中的功能标签:
    功能标签

     if
     	分支
     	判断
     	if -else
     	if -elif -else
    
    {% if 判断条件 %}
    	html执行语句
    {% elif 判断条件 %}
    	html执行语句
    {% else 判断条件 %}
    	html执行语句
    {% endif %}
    
     ifequal  判断两个值是否相等
     ifnotequal  判断两个值是否不等
    
    {% ifequal v1 v2 %}
    	html执行语句
    {% endifequal %}
    
     for
     	for i in xxx
     	empty
     	forloop
    
    {% for value in values %}  # 此处的values就是django传给html的数据
    	html操作语句
    {% endfor %}
    
  3. 过滤器:|

     将前面的输入作为后面的输出
     upper
     lower
     safe
     	确认安全
     	进行渲染
     add
     divisibleby
    
  4. 注释

     	单行注释:
     {#  #}
     
     	多行注释:
     {% comment %}
         ...
     {% endcomment %}
    

模板加载

加载模板文件,然后渲染模板文件,转换为一個大字符串

请求状态码

2xx
	请求成功
3xx
	重定向
4xx
	请求错误(客户端)
5xx
	响应错误(服务端)

views

视图函数

MTV中的View
相当于controller作用
控制器 接收用户输入(请求)
协调模板模型,对数据进行处理

路由器

django项目中的urls.py,负责路由分发

url
	跟路由中我们会使用include形式将整个子路由添加进来
第一个参数:正则匹配的路径
第二个参数:包含的路由
	在子路由中:
除了前两个参数与跟路由参数一致以外
第三个参数name=‘别名’
还需在urlpatterns之前定义app_name,即整个子路由的别名
	在HTML中就可以根据 app_name:name 来动态获取路由(path)

接收参数

url路径参数分为两种
	位置参数
		使用小括号包含规则
		一个小括号代表一个参数
		代表视图函数里需要传入的一个参数
		url上的参数需要和views里函数的参数数量一致(不包括request)
	关键字参数
		可以在小括号里定制参数名字(?P<name>regx)
		views里的视图函数中存在和小括号中name对应的参数
		参数不区分顺序,数量也需要一致(不包括request)
请求参数

反向解析

在模板中使用
{% url %}
	{% url 'app_name:name' %}
	如果存在位置参数
		{% url 'app_name:name' value1 value2 ... %}
	如果存在关键字参数
		{% url 'app_name:name' key1=value1 key2=value2 ... %}

在django的view中使用:配合reverse(),也可以传递参数
reverse('app_name:name', [kwargs={key:value}])
url的匹配规则
	按照书写规则,从上到下匹配
	没有最优匹配的概念,匹配到就停止了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值