View视图,负责业务逻辑,并在适当的时候调用Model和Template
http请求中产生的两个核心的对象:HttpRequest(http请求),HttpResponse(http响应)
request方法:
request.method;判断请求的类型(post或者get)
request.POST.get(“xx”); 获得post方式的数据
request.GET.get(“xx”); 获得get方式的数据
request.path; 基本路径没有添加后面自己加的内容
request.user; 默认的一个初始对象
request.get_full_path(); 加后面自己加的内容的路径
respons方法:
页面渲染: render(路径) render_to_response()
页面跳转: redirect(“路径”);可以跳转到另一个页面
locals(): 可以直接将函数中所有的变量传给模板
redirec:从一的url转向一个新的url。这种隐射也许有规则。就用redirec。
Template基础:
我们先来做一个例子(让网页获取当前时间):
首先建一个django项目。
然后在urls里加入路径:
然后在views写入对应的函数:
最终得到结果:
上面这个任务虽然可以完成,但是大量的需求于html的代码,但是真正做项目的时候这样写修改的时候所需要的代价太大,前端开发和后端开发混在了一起。所以此时我们需要学习模板。
模板的组成:HTML代码和逻辑控制代码。
逻辑控制代码的组成:
1 变量(使用双大括号来引用变量): {{name}}
例子:
先写一个模板:
t=Templat(“< h1 >ni hao {{name}}< /h1 >"_
然后写入和模板有关的键值对:
c=Context({”name":“hei”})
然后渲染:
t.render©
就可以拿到 ni hao hei
我们可以把views里的内容改一下:
然后写一个名为shitu的html文件:
写入
里面的内容就可以做到用模板显示时间了。
ps:句点符,在views里面在一个列表里l={a,b,c,d}如果想要b就用l.1来取。
过滤器:
语法格式: {{obj|fulter;param}}
1.add 给变量加上响应的值
2.addslashes 给变量中的引号加上斜线
3.capfirst 首字母大写
4.cut 从字符串中移除给定的字符
5.date 格式化日期字符串
6.default 如果值是False,就替换成默认值,否则就是用本来的值
7.default_if_none 如果值是None,就替换成默认值,否则就是用本来的值
8.autoescape off,endautoescape 就是看浏览器的安全问题
控制语句 if:
{% if xxxx%}
xxxxxxx
{%else xxxx%}
xxxxxxx
{%endif %}
for 循环:
{% for obj in list %}
xxxxxxxxxxxxx
{%endif %}
用法和大多数编程语言使用相同,如果大家不懂我可以再给解释。
forloop的作用:
1.forloop.counter 表示循环的次数
2.forloop.counter0 表示循环的次数从0开始计数
3.forloop.first 判断是不是第一次遍
剩下的tag标签:
{% csrt_token%}:用来防治跨站攻击验证。
{% url %}:引用路由配置地址。py
{% with %}:用更简单的变量名替代复杂的变量名。
{% with xxx=xxxxxx %}{{xxx}} {%endwith%}
{% verbat %}:禁止render
{% load %}:加载标签库
自定义filiter和simple_tag
1.在app中创建templatetags模块:
2.创建任意的py文件
其中:
这三行必须包括而且需要一样。
3.在使用自定义filiter和simple_tag的html文件中导入之前创建的py文件:
4.使用filiter和simple_tag
5.在setting中的INSTAKKED—APPS配置当前app,不然django无法找到自定义的simple_tag.
自定义标签
注意filiter可以用在if等语句后,simple_tag不行
继承:{% extends “index.html” %}
块:{% block content%}
xxxxxx
{% endblock %}
块选择的东西就会被改不会被继承
inclode:需要加一个{% load staticfiles %}
下面用{% include “xxxxx.html” %}