此文是继承博主的上一篇博客:http://blog.csdn.net/yuzhengfei7/article/details/78242409
1.创建步骤
在APP的根目录下创建名为templates的目录,然后在该目录
下创建HTML文件(文件上鼠标右键,选择New–>HTML File),命名为index.html,代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>{{hello}}</h1>
</body>
</html>
2.在views.py中返回render(),代码如下:
from sys import modules
from django.shortcuts import render # render为Django自动添加,render为渲染
from django.http import HttpResponse
from . import models
def index(request):
# 通常传递三个参数,第一个为request,请求对象本身;
# 第二个为模版文件,即页面,即index.html;
# 第三个为传递到前端的数据
return render(request, 'index.html', {'hello': 'Hello, Blog!'})
3.运行结果(浏览器地址栏输入:localhost:8000/blog/index)
扩展
DTL的初步使用:render()函数中支持一个dict类型(字典类型)参数,即键值对;该字典是后台传递到模板的参数,键为参数名;在模板中使用{{参数名}}来直接使用。
注意事项
问题:Django查找template,Django按照INSTALLEN_APPS
中添加顺序查找templates,不同的APP下Templates目录中的同名.html文件会造成冲突。
解决templates冲突方案:在APP的templates目录下创建以APP名为名称的目录,将html文件放入新创建的目录下,即在中间加一层APP的名来区分相同名称的.html文件。
小技巧
第一个:什么是templates过滤器?
1.写在模板中,属于Django模板语言
2.可以修改模板的变量,从而显示不同的内容
第二个:怎么使用Templates过滤器?
{{ value | filter }}
例如:{{ list_nums | length}} , length表示前面list的长度,因此,此{{ }}中显示的内容就不再是前面的list的内容了,而是list的长度
第三个:过滤器怎么叠加?
{{ value | filter2 | filter2 | …}}
如下代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Edit Page</title>
</head>
<body>
<form action="{% url 'blog:edit_action' %}" method="post">
{% csrf_token %}
{# {% if article %}#}
<input type="hidden" name="article_id" value="{{ article.id | default:'0' }}">
<label>文章标题
<input type="text" name="title" value="{{ article.title }}">
</label>
<br/>
<label>文章内容
<input type="text" name="content" value="{{ article.content }}">
</label>
<br/>
{# {% else %}#}
{# <input type="hidden" name="article_id" value="0">#}
{# <label>文章标题#}
{# <input type="text" name="title" value="">#}
{# </label>#}
{# <br/>#}
{# <label>文章内容#}
{# <input type="text" name="content" value="">#}
{# </label>#}
{# <br/>#}
{# {% endif %}#}
<input type="submit" value="修改">
</form>
</body>
</html>
如果上述代码不在{% if article %}下面的value="{{ article.id | default:‘0’ }}"中加入过滤器,就必须在下面重新写上一段特别冗余的{% else %}}