View层
- view中会定义多个函数,分别用来处理用户访问请求,最终都会返回render(request, 'x.html', context)
- context将数据库中的要取数据和网页中要显示的部分(填空的部分)做映射
- context参数为字典结构
-
template中被替换的内容格式{{ title }},{{ }}中间变量为context字典的中key,最终网页呈现的是context字典中的值。相当于context中的key为template所能调用的变量
context.png
context = {
'ArtiInfo':loaded
'title':'just a title'
#相当于'ArtInfo' = loaded
#相当于'title'='just a title'
}
<h3><a href="#">{{ item.title }}</a></h3>
model层
- model层相当于数据库的代理,从数据库中取出数据,放到context参数中,最终映射到template中
- 首先,model层需要先从setting层加载数据库
from mongoengine import connect
connect('wbsite', host='127.0.0.1', port=27017)
- mongoengine将数据库中数据以面向对象的方式进行操作
- model层需要建立数据模型(用户自定义类),用于context来引用
class ArtiInfo(Document):
des = StringField()
title = StringField()
scores = StringField()
tags = ListField(StringField())
#指定需要读取的sheet
meta = {'collection':'arti_info3'}
for i in ArtiInfo.objects[:1]:
print(i.title,i.des,i.scores,i.tags)
分页器(Paginator)
- Django自带的一个分页插件包,用来实现网页分页功能
- 需要在View层导入paginator module
from django.core.paginator import Paginator
Paginator.png
- View层Paginator代码的实现,注意request.GET.get('page',1)用法,以及context的写法
def index(request):
limit = 4
arti_info = ArtiInfo.objects[:20]
paginatior = Paginator(arti_info,limit)
page = request.GET.get('page',1)
print(request)
print(request.GET)
loaded = paginatior.page(page)
context = {
'ArtiInfo':loaded
}
return render(request,'index.html',context)
Django模板语言
- 在网页中使用类似python语法的代码实现数据映射
{% for item in ArtiInfo %}
<li>
<img src="{% static 'images/0001.jpg' %}" width="100" height="91">
<div class="article-info">
<h3><a href="#">{{ item.title }}</a></h3>
<p class="meta-info">
{% for tag in item.tags %}
<span class="meta-cate">{{ tag }}</span>
{% endfor %}
</p>
<p class="description">{{ item.des }}</p>
</div>
<div class="rate">
<span class="rate-score">{{ item.scores }}</span>
</div>
</li>
{% endfor %}
网友评论