Djando模板
来源:互联网 发布:软件测试工资待遇2017 编辑:程序博客网 时间:2024/06/07 06:48
Djando模板
在上一章节中,我们使用django.http.HttpResponse()来输出”Hello World!”,实际上并没有遵守MVT模式。
下面针对上面的程序做一个修改,使其符合MVT模式。
在test_django工程目录,创建一个templates目录,这个目录用于存放模板。
在templates目录创建一个hello.html文件
整个目录结构如:
hello.html文件代码:
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body> {{abc}} # 这个是django用于占位的,具体看下文</body></html>
在test_django目录下的settings.py文件中,修改TEMPLATES中的DIR为[BASE_DIR+”/templates”],如下所示:
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [BASE_DIR+"/templates"], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, },]
- 修改view.py中的显示
from django.shortcuts import renderdef hello(request): context = {} context['abc'] = 'abc占位的内容:一行白鹭上青天' # 这里abc,赋值的内容,就会替代hello.html文件中的{{abc}} # 这里context不要写成这样: # context = {'abc':'abc占位的内容:一行白鹭上青天'},这样写,context是set类型 return render(request=request, template_name='hello.html', context=context)
- 启动服务后,在浏览器输入:
127.0.0.1:8000
,如图:
Django模板标签
- if/else标签
{% if condition %} ...{% endif %}或者{% if condition1 %} ...{% elif condition2 %} ...{% else %} ...{% endif %}
- for标签
# 正序迭代{% for item in list %} ...{% endfor %}eg:<ul> {% for item in list %} <ul>{{item}} {% endfor %}</ul># 反向迭代{% for item in list reversed %} ...{% endfor %}
- ifequal/ifnotequal
ifequal:如果相等ifnotequal:如果不相等# 比较a,b两个变量{% ifequal a b %} ...{% endifequal %}或者{% ifequal a b %} ...{% else %} ...{% endifequal %}
- 注释标签
{# 注释内容 #}
- 过滤器
模板过滤器可以在变量被显示前修改它,过滤器使用管道字符,如下所示:
{{ name | lower }} # {{name}}变量被过滤器lower处理后,文档大写转成小写。{{ name | first | upper }} # {{name}}的首字母转成大写{{name | truncatewords:"5"}} # 显示{{name}}变量的前5个字符除此之外还有addslashes,data,length过滤器
- include标签
include标签允许在模板中包含其他的模板的内容。
{{% include "nav.html" %}} 包含nav.html
模板的继承
模板可以使用继承的方式来实现复用。
1.接下来在templates目录创建一个base.html文件,文件内
容如下:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body> <h2>{% block title %}标题{% endblock %}</h2> <h4>{% block author %} 作者 {% endblock %}</h4> {% block mainbody %}<p>段落</p>{% endblock %}</body></html>
2.创建一个article.html文件
{% extends "base.html" %} # 表示继承base.html{% block title %} # 替换base.html中的占位内容,下同 背景{% endblock %}{% block author %} 朱自清{% endblock %}{% block mainbody %} 我与父亲不相见已二年余了,我最不能忘记的是他的背影。{% endblock %}
3.修改view.py的显示
from django.shortcuts import renderdef hello(request): return render(request=request, template_name='article.html')
4.启动服务,浏览器输入
127.0.0.1:8000
,显示如下:
阅读全文
0 0
- Djando模板
- Djando中模板的继承
- djando教程
- Djando安装配置
- 《djando入门与实现》慕课笔记
- python学习——胡乱瞎搞之djando无法创建目录
- Djando获取上传文件数据和数据在页面循环输出
- 模板
- 模板?
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- R语言-决策树-party包
- 除法
- java堆内存分配与回收策略
- json文件导入hbase
- Electron结合React开发桌面应用
- Djando模板
- Leetcode 6. ZigZag Conversion(java版)
- Linux网络编程--(2)网络编程基础
- a regression model that predicts one model variable.
- C++队列模拟银行排队叫号(加州大学伯克利分校计算机专业数据结构与算法作业)
- python 斐波那契数列
- 【NOIP2017提高A组集训10.28】图
- 西安现场打铁记
- 拉格朗日乘子法(Lagrange Multiplier)详解以及乘子lambda的意义