python实战计划 Django 的模板语言

  1. 理解上下文
  2. 使用模板语言
  3. 制作分页器

Note

理解上下文

views.py

render(request,x.html,context) 传入三个函数
{{ id }} , context = {id1='',id2='', }

models.py

from mongoengine import *

模板语言

{% for i in Artinfo%}

{% endfor %}

分页器

from django.core.paginator import Paginator

Aim

用58的数据库和昨天的模板生成一个博客

Result

python实战计划 Django 的模板语言_第1张图片

Code

html格式化 项目下载

models.py

  1. 链接数据库
  2. 写个类,里面所有属性和数据库条目名字同名
  3. meta = 'collection' : 'sheet_out'链接对于collection
from django.db import models
from mongoengine import *
from mongoengine import connect

connect('ilw',host='localhost',port = 27017) 


class ArtiInfo(Document):
    price = StringField() # 注意和数据库中的名字一样
    place = StringField()
    title = StringField()
    comment = StringField()
    url = StringField()
    meta = {'collection':'sheet_out'}
# if use list
# tags = ListField(StringField())

views.py

  1. 设置每页上限
  2. 生成一个翻页对象
  3. 加载当前页
from django.shortcuts import render
from django.core.paginator import Paginator
from django_web.models import ArtiInfo


def index(request):
    limit = 3
    paginator = Paginator(ArtiInfo.objects,limit)
    page = request.GET.get('page',1)

    loaded = paginator.page(page) # 注意这里是小写的
    content = {'ArtiInfo' : loaded} # 注意这里不能直接写字典
    return render(request,'index.html',content)

index.html__生成条目

  1. for && endear
  2. {{代替id}}代替
{% for it in ArtiInfo %}

Recent Posts

Eric Ferraiuolo's avatar

{{ it.title }}

{{ it.price }}

{% endfor %}

如果用到list

{% for tag in item.tags %}
    {{ tag }}
{% endfor %}

index.html__生成页码

{% if ArtiInfo.has_previous %} Pre {% endif %} {{ ArtiInfo.number }} of {{ ArtiInfo.paginator.num_pages }} {% if ArtiInfo.has_next %} Next {% endif %}

总结

这一章模板内容相对较多...不过对于自己博客理解加深了一层还是很开心啦~~

你可能感兴趣的:(python实战计划 Django 的模板语言)