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<slug>[a-zA-Z0-9_\-]+)[/]{0,1}$', 'apps.views.post', name='post_view'),

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

{{ post.get_absolute_url }}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容