课程地址:点击这里
主要讲的是templates中模板标签的使用。感觉现在可以敏捷学习了。但这个项目一定要做完。这一部分可以参考一下这篇文章:刘江的博客教程--Django模版语言详解。
杨仕航大神的教程更重实践,论讲解还需要补充。所以从别的资料上把基本定义了解一下。
1. 从views.py到模版
先看views.py
。
# views.py
from django.shortcuts import render_to_response, get_object_or_404
from .models import BlogType, Blog
# Create your views here.
def blog_list(request):
context = dict()
context["blogs"] = Blog.objects.all()
context["blogs_count"] = Blog.objects.all().count()
return render_to_response("blog_list.html", context)
def blog_detail(request, blog_id):
context = dict()
context["blog"] = get_object_or_404(Blog, pk = blog_id)
return render_to_response("blog_detail.html", context)
def blogs_with_type(request, blogs_w_type):
context = dict()
blog_type = get_object_or_404(BlogType, pk = blogs_w_type)
context["blogs"] = Blog.objects.filter(blog_type = blog_type)
context["blog_type"] = blog_type
return render_to_response("blog_with_type.html", context)
每一个views
方法都有比较固定的写法。以最后的blogs_with_type
为例:
context = dict() # 创建一个名为context的空字典
blog_type = get_object_or_404(BlogType, pk = blogs_w_type)
context["blogs"] = Blogs.objects.filter(blog_type = type_c)
context["blog_type"] = blog_type
return render_to_response("blog_with_type.html", context)
- 首先,建立一个名为
context
的空字典 - 然后为
context
添加键值对 - 最后返回
render_to_response
方法。左边参数是模板网页,右边参数是context字典。
然后再看blog_with_type.html
。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{{ blog_type.type_name }}</title>
</head>
<body>
<div>
<a href = {% url "home" %}>
<h3>只要不延毕就好了</h3>
</a>
</div>
<hr>
<!---<p>共有{{ blogs | length }}篇博客</p>--->
<p>共有{{ blogs_count }}篇文章</p>
{% for blog in blogs %}
<a href = {% url "blog_detail" blog.pk %}><h3>{{ blog.title }}</h3></a>
{% empty %}
<p>暂无博客,敬请期待!</p>
{% endfor %}
</body>
</html>
这里面就出现了和普通的html页面不一样的东西。
-
{{blog_count}}
:双圆括号,名为“变量”。 -
{{ blogs | length }}
:过滤器 -
{% for blog in blogs %}
:标签
2. 变量
当模版引擎遇到一个变量,它将从上下文context
中获取这个变量的值,然后用值替换掉它本身。
这个context
即为方法中定义的字典。然后变量值从views.py
中找。
3. 过滤器
过滤器看起来是这样的:{{ name | lower }}
。使用管道符号(|)来应用过滤器。该过滤器将文本转换成小写。(引用)
{{ blogs | length }}
过滤器的意思是统计博客数量。
4. 标签
标签看起来像是这样的: {% tag %}。
本文中的{% for blog in blogs %}
标签是for循环标签。
更多的请从官方查询:
网友评论