Django 模板中更好的使用 URL

之前在 Template 里面调用 URL 地址都是用 {% url 'apps.views.post' post.id %} 这种方式来调用 urls.py 里面配置的 URL,而且 Template 里面会用到很多,如果当参数有变动的时候,重构将会是很麻烦的事情。

下面通过在 models 中定义一个 get_absolute_url 方法:

# -*- coding: utf-8 -*-
from django.db import models
from django.shortcuts import reverse

class Post(models.Model):
    title = models.CharField('标题', max_length=200)
    slug = models.CharField('slug', max_length=255, blank=True)
    summary = models.TextField('摘要', blank=True)
    body = models.TextField('正文')

    def get_absolute_url(self):
       return reverse('post_view', args=[self.slug])

在 urls.py 里面配置 URL:

url(r'^post/(?P[a-zA-Z0-9_\-]+)[/]{0,1}$', 'apps.views.post', name='post_view'),

将来在 Template 里面调用 URL 地址的时候就可以使用下面这种方式:

{{ post.get_absolute_url }}

你可能感兴趣的:(Django 模板中更好的使用 URL)