DjangoPython

Django老男孩笔记进阶

2019-02-24  本文已影响19人  莫辜负自己的一世韶光

Django的模板系统

示例:
变量

  1. {{ name }} 变量
  2. for循环:
{% for i in book_list %}
  {{forloop.counter}}
  {{forloop.last}}
  {{i}}
{% endfor %}
  1. if判断
{% if 10 > 5 %}
{% else %}
{% endif %}
  1. if ... in 判断
{%  if name in name_list %}
{% endif %}

变量

当模板语言中遇到一个变量的时候,它会先去计算这个变量的值,如果有值,就用这个值代替原来的变量,如果这个值不存在,就不显示.
模板语言中.具有特殊的含义,当系统遇到.的时候会按照如下的顺序查询

注意: 如果计算结果是一个方法,可以调用的,它将作为一个无参数来调用.调用的结果将作为模板的值.如果使用的变量不存在,模板系统将用空字符串来代替

filter(过滤器)
语法: {{value|filter_name:参数}}

{{ value|default:"nothing"  }}

如果value没有传值或者值为空的话就显示nothing

<p>文件大小: {{ file_size|filesizeformat }}</p>
返回value的长度,如果是value=['a','b','c','d']的话就显示4
<p>切片: {{ name_list|slice:"1:-1" }}</p>
<p>切片: {{ name|slice:"0:-1" }}</p>
{{  value|date: "Y-m-d H:i:s "}}
<p>时间: {{ now|date:"Y-m-d H:i:s" }}</p>

经过格式化后就变成下面这样


如果没有使用safe,页面是这么显示的

<p>标签显示: </p>{{ html_str }}

当成了一个字符串显示到页面上.

如果使用了safe,则会当成一个标签嵌入到当前页面

<p>标签显示:</p>{{ html_str|safe }}
<p>截断的字符串:{{ truncate_chars|truncatechars:9 }}</p>

2. 然后在自己创建的.py文件中,定义并注册自己定义的想要使用的filter

使用我们自定义的filter

{% load app01_filters %}
<p>自定义filter的使用: {{ name|sb }}  {{ name|addstr:'第二个参数加起' }}</p>

注意, 这里加载模板的时候必须先重新启动项目,不然找不到对应的模块

for 循环

<ul>
{% for user in user_list %}
    <li>{{ user.name }}</li>
{% empty %}
    <li>空空如也</li>
{% endfor %}
</ul>

if 判断

with

csrf_token

注意

母版

  1. 为什么要有模板和继承:
    把多个页面公用的部分提取出来,放在一个母版里面.其他的页面只需要继承母版就可以了.
  2. 具体的使用步骤:
    1> 把公用的HTML部分提取出来,刚到base.html文件中,其他的页面只需要继承母版就可以了
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="x-ua-compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Title</title>
  {% block page-css %}
  
  {% endblock %}
</head>
<body>

<h1>这是母板的标题</h1>

{% block page-main %}

{% endblock %}
<h1>母板底部内容</h1>
{% block page-js %}

{% endblock %}
</body>
</html>

组件 include

静态文件相关

simple_tag
和自定义的filter类似,但是它可以接受任意个参数,并且它在使用的时候并不需要使用管道符.

1. 在templatetags下创建一个py文件simple_tag.py,然后在里面定义一个函数,并注册

2. 使用的时候,也是先加载

inclusion_tag
多用于返回html代码片段

Django的视图系统

视图的作用:
接受web请求并且返回web响应
无论视图本身包含什么逻辑,都要返回响应.我们一般约定视图写到对应的app的views.py中

FBV 和 CBV

Request对象和Response对象
当一个页面被请求的时候,Django会创建一个包含本次请求的信息的HttpRequest对象.
Django会将这个对象自动传递给响应的视图函数,一般视图函数约定俗成地使用request参数来接收这个对象.

Request 对象

上传文件
对应的html写法

上传文件的逻辑,注意使用的是chunks()

Response对象

httpResponse的使用

JsonResponse
JsonResponse是HttpResponse的子类


使用JsonResponse代替原来的json.dumps()

如何使用JsonResponse处理非字典的数据类型呢?

image.png

路由系统

Django的路由系统的概述
URL配置(URLconf)就像是Django所创建的网站的目录.它本质上是URL和该URL要调用的视图函数之间的映射表
Djang就是用这种方式告诉程序,对于这个URL调用这段代码,对于那个URL调用那段代码.

正则表达式详解



上一篇 下一篇

猜你喜欢

热点阅读