templates 讲后台得到的数据渲染到页面上:话不多说,先看具体代码。

urls:

from django.conf.urls import url
from django.contrib import admin
from django.urls import path from a00 import views urlpatterns = [
path('admin/', admin.site.urls),
url(r'show_time/',views.show_time ),
url(r'list_bianli/',views.list_bianli),
url(r'dict_bianli/', views.dict_bianli),
url(r"login/",views.login,name="log") ]

views:

from django.shortcuts import render, HttpResponse
import time, datetime # Create your views here. class Animal():
def __init__(self,name,sex):
self.name=name
self.sex=sex def show_time(request):
t = datetime.datetime.now()
return render(request, "show_time.html", locals()) def list_bianli(request):
l = ["韩寒", "梅梅", "丽丽"] return render(request, "index.html", {"action":l}) # 遍历列表 def dict_bianli(request):
c=Animal("alex","公") l = ["韩寒", "梅梅", "丽丽"]
d = {"name": "憨憨", "age": 12, "hobby": "篮球"} a="<a href=''>click</a>"
return render(request, "dict_bian.html",locals()) # 遍历字典 def login(requrst):
return HttpResponse("OK")

show_time.html:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>时间为:{{ t }}</h1> {#管道符 date方法 主要格式化日期#}
<h1>{{t|date:"Y-m-d"}}</h1> </body>
</html>

index.html:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>Hellow {{ action.0 }}</h1>
<h1>Hellow {{ action.1 }}</h1>
<h1>Hellow {{ action.2 }}</h1> <h1>{{ a }}</h1>
</body>
</html>

dict_bian.html:

{#在HTML中加在你的filter#}
{% load myTag %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{#万能聚点符 可以遍历字典,列表 等等#}
<h1>Hellow {{ d.name }}</h1> <!-- 憨憨-->
<h1>Hellow {{ d.age }}</h1>
<h1>Hellow {{ d.hobby }}</h1>
<h1>hello {{c.name}}</h1>
<h1>hello {{c.sex}}</h1> <h1>憨的真是年龄{{d.age|add:12 }}</h1> <!--憨的真是年龄24--> {#第一种写法#}
<h1>{{ a|safe}}</h1> <!--相当于超链接--> {#第二种写法#}
{% autoescape off %}
<h1>{{ a }}</h1>
{% endautoescape %} {#if语句#}
{#输出结果:憨憨的年龄小于12#}
{% if d.age > 18 %}
<h1>hello {{ d.name }}</h1>
{% else %}
<h1>{{ d.name }}的年龄小于{{ d.age }}</h1>
{% endif %} {#for循环#}
{#输出结果:1:韩寒 2:梅梅 3:丽丽 #} {% for name in l %} <h1>{{ forloop.counter0 }}:{{ name }}</h1> 倒序输出
<h1>{{ forloop.revcounter0 }}:{{ name }}</h1> {% endfor %} <form action="{% url 'log' %}" method="post">
<p>用户名<input type="text" name="user"></p>
<p>密码<input type="text" name="pwd"></p>
<p><input type="submit"></p>
{# 渲染“身份证” 解决403#}
{% csrf_token %} </form> {#通过自定义过滤器来完成乘法运算#}
{{ d.age|filter_multi:3 }} <!-- 输出结果 36 此时d.age 相当于后台 filter_multi 方法中的x ,3 才是参数y--> {% simple_tag_multi 3 5 2 %} <!-- 30 --> {% simple_tag_multi d.age 5 2 %} <!-- 120 --> </body>
</html>

自定义过滤器filter:

第一步:在项目中创建一个文件夹名字叫templatetags.

第二步:在文件夹templatetags建一个.py文件,名字自定

第三步:在.py文件中写代码:

myTag.py:

from django import template  # 固定 背下来
from django.utils.safestring import mark_safe # 固定 背下来 register = template.Library() # register 的名字是固定的,不可改变 @register.filter
def filter_multi(x, y): # y是参数 x不是 并且只能有一个参数
return x * y @register.simple_tag
def simple_tag_multi(x, y, z): # 可以传多个参数
return x * y * z

接着在需要用到自定义过滤器filter的HTML中运用即可:

 注:复制的话去前面dict_bian.html中

templates 中 extends 和 include 用法:

base.html:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head> <style>
*{
margin: 0;
padding: 0;
}
.nav{
line-height: 40px;
width:100%;
background-color: darkblue;
color: white;
font-size: 20px;
text-align: center;
} .left{
width:20%;
min-height: 600px;
overflow: auto;
background-color: lightblue;
}
.manage{
text-align: center;
padding: 20px 0px;
margin: 20px 0;
font-size: 18px;
}
.content{
width:70%;
min-height:600px ;
} a{
text-decoration: none;
}
h1,h2{
text-align: center;
}
.left,content{
float: left;
} </style>
<body> <div class="outer">
<div class="nav">标题</div> <div class="left">
<div class="student manage"><a href="/student/">学生管理</a></div>
<div class="teacher manage"><a href="">老师管理</a></div>
<div class="course manage"> <a href="">课程管理</a></div>
<div class="classes manage"><a href="">班里管理</a></div>
</div> <div class="content">
{# 相当于放了一个盒子 因为此行代码需要修改 #}
{% block content1 %} <h1>WELCOME TO LOGIN</h1> {% endblock %}
</div>

</div> </body>
</html>

需要继承base.html的student2.html代码:

{#继承base.html全部代码#}

{% extends "base.html" %}

{# 修改base.html中定义的盒子#}
{% block content1 %}
{# 如果想拿父类(base.html中盒子哪儿一块)#}
{{ block.super }} {% for student in student_list %}
<h2>学生{{ student }}</h2> {% endfor %}
{# 在本页中在加一个Html的内容 用 include #}
{% include "test.html" %}
{% endblock %}

Python学习第二十八课——Django(templates)的更多相关文章

  1. Python学习第二十八课——Django(urls)

    Django框架中的urls配置: 首先通过pycharm创建一个Django项目: 例如要写blog的功能:则在digango_lesson中的urls代码如下: """ ...

  2. Python学习第二十六课——PyMySql(python 链接数据库)

    Python 链接数据库: 需要先安装pymysql 包 可以设置中安装,也可以pip install pymysql 安装 加载驱动: import pymysql # 需要先安装pymysql 包 ...

  3. Python学习第二十五课——Mysql (多表查询)

    多表查询: 内连接查询: 首先:创建两个表一个为tableA,一个为tableB,并且插入数据(代码省略) 同时查询两个表的记录: select * from tableA,tableB; 根据tab ...

  4. Python学习第二十四课——Mysql 外键约束

    外键:主要是关联两个表的 举个栗子:在建表中创建外键 -- 添加外键例子 CREATE TABLE teacher( id TINYINT PRIMARY KEY auto_increment, na ...

  5. Python学习第二十二课——Mysql 表记录的一些基本操作 (增删改)

    记录基本操作: 增:(insert into) 基本语法: insert into 表名(字段) values(对应字段的值): 例子1: insert into employee(id,name,a ...

  6. Python学习第十八课——继承,接口继承等

    1.继承:字面意思 # 继承 : 字面意思 class father: pass class grandfather: pass class children(father): # 单继承 pass ...

  7. NeHe OpenGL教程 第二十八课:贝塞尔曲面

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  8. 风炫安全web安全学习第二十八节课 CSRF攻击原理

    风炫安全web安全学习第二十八节课 CSRF攻击原理 CSRF 简介 跨站请求伪造 (Cross-Site Request Forgery, CSRF),也被称为 One Click Attack 或 ...

  9. 风炫安全WEB安全学习第二十三节课 利用XSS获取COOKIE

    风炫安全WEB安全学习第二十三节课 利用XSS获取COOKIE XSS如何利用 获取COOKIE 我们使用pikachu写的pkxss后台 使用方法: <img src="http:/ ...

随机推荐

  1. Jquery 如何设置多个attr()属性

    Jquery 如何设置多个attr()属性?     文章来源:刘俊涛的博客 欢迎关注公众号.留言.评论,一起学习. _________________________________________ ...

  2. Linux oracle安装 内核参数讲解

    在安装Oracle的时候需要调整linux的内核参数,但是各参数代表什么含义呢,下面做详细解析. Linux安装文档中给出的最小值: fs.aio-max-nr = 1048576 fs.file-m ...

  3. Learn from Niu 2020.1.13

    观念: 1. 把可视化的东西拾起来, 毕竟是做那个出身的. 2. 可视化里面时序数据,时空数据一直都是非常重要的. 3. know your data永远是最重要的一步, 我想更好的方式是,数据驱动, ...

  4. 删除空目录命令 - rmdir

    (1) 命令名称:rmdir (2) 英文原意:remove empty directories (3) 命令所在路径:/bin/rmdir (4) 执行权限:所有用户 (5) 功能描述:删除空目录( ...

  5. 220. 存在重复元素 III

    题目: 给定一个整数数组,判断数组中是否有两个不同的索引 i 和 j,使得 nums [i] 和 nums [j] 的差的绝对值最大为 t,并且 i 和 j 之间的差的绝对值最大为 ķ. 示例 1: ...

  6. Windows下Go安装&环境配置&编译运行

    Go下载安装 官方Go下载站点:https://golang.google.cn/ 也可以选择:https://studygolang.com/dl 配置环境变量 常用环境变量 GOROOT GORO ...

  7. java下载和环境变量配置

    初学java,以前没有接触过这方面内容,所以简要记录一下我2个月的学习流程. 首先,我在慕课上学习java的基础,浙江大学翁恺老师的课程. 下载ECLIPSE-java 进入官网:https://ww ...

  8. win 下 docker 环境配置

    声明 此文只针对 win7.win10 家庭版等用户操作系统,因为这些系统无法使用 windows 的 Hyper-V 虚拟技术.只能借助于 Virtual Box 虚拟机来使用 docker. Do ...

  9. vue + elementui表单重置 resetFields问题(无法重置表单)

    问题: elementui在重置表单时,无法使用this.$refs['formRefVal'].resetFields()清空表单数据; elementui 设置rules后没有效果 解决方法: 1 ...

  10. AcWing 873. 欧拉函数

    //用定义直接求 #include<bits/stdc++.h> using namespace std; int main() { int n; cin>>n; while( ...