Django视图与模板+vs2019

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” %}

发布了14 篇原创文章 · 获赞 7 · 访问量 583

猜你喜欢

转载自blog.csdn.net/weixin_45743162/article/details/104353292
今日推荐