django 包含标签例子

1 有app books(mysite/books)

models.py

from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=100)
    authors = models.ManyToManyField(Author)
    publisher = models.ForeignKey(Publisher)
    publication_date = models.DateField(blank=True,null=True)

    def __unicode__(self):
        return self.title
views.py

from django.http import HttpResponse
from django.shortcuts import render_to_response
from books.models import Book

def showbook(request):
    return render_to_response('result_snippet.html',)

2 books下建 templatetags(mysite/books/templatetags)

extras.py

from django import template
from books.models import Book

register  = template.Library()

@register.inclusion_tag('book_snippet.html')      <<<通过修饰器注册inclution tag。
def books_for_title(titlequery):
    books = Book.objects.filter(title=titlequery)
    return {'books': books}

3 templates(mysite/templates)

book_snippet.html

<ul>
{% for book in books %}
    <li>{{book.title}}</li>
{% endfor %}
</ul>
result_snippet.html

{% load extras %}
{% books_for_title 'one day in Beijing' %}           <<< 这是inclution tag的使用方法。

4 组织url

from django.conf.urls import patterns, include, url
import books.views

urlpatterns = patterns('',
('^$',my_homepage_view),
('^showbook/$',books.views.showbook),

)

解释:包含标签(inclution tag)的主要思路是当前模板通过使用其他模板显示数据。

通过@register.inclusion_tag(‘book_snippet.html’) 注册包含标签,在def books_for_title中定义数据的获得方式,在’book_snippet.html’中定义显示方式。

使用时,{% books_for_title titlequery %},前者指示需要调用的自定义函数books_for_title,后者为传给books_for_title函数的参数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值