templates
MTV中的Template
充当数据展示的角色
在Django中使用的就是Django模块
模板文件分为静态html和模板html
静态资源
使用的时候注意在settings中配置静态资源文件的位置
STATICFILES_DIRS
在模板html文件中使用静态资源
使用{% loadstatic %}
{% static ‘相对路径’ %}
模板html文件中的语法:
-
变量:
变量名遵循命名规则从django中往模板html文件里传值:
将数据以字典的形式放在响应中返回即可在模板html文件中接收变量:
{{ var }}
在两个大括号内填入传来变量字典中的key,在展示时就是展示字典的value值 -
标签
标签格式:{% 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 %}
-
过滤器:|
将前面的输入作为后面的输出 upper lower safe 确认安全 进行渲染 add divisibleby
-
注释
单行注释: {# #} 多行注释: {% 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的匹配规则
按照书写规则,从上到下匹配
没有最优匹配的概念,匹配到就停止了