另一个领域,而不是ID我使用Django 1.5的Django在网址中使用模板标签
我有这个代码块在HTML文件
{% for p in latest_posts %}
<li><a href="{% url 'blog:detail' p.id %}">{{p.title}}</a></li>
{% endfor %}
如果我改变p.id到页。标题
{% for p in latest_posts %}
<li><a href="{% url 'blog:detail' p.title %}">{{p.title}}</a></li>
{% endfor %}
然后我收到以下错误
Reverse for 'detail' with arguments '(u'Second post',)' and keyword arguments '{}' not found.
我希望url是/ title而不是/ id。
这是我的urls.py文件
urlpatterns = patterns ('',
url(r'^(?P<title>\w+)/$',
PostDetailView.as_view(),
name = 'detail'
),
)
我应该用get_absolute_url?
更新
我加了废料场,但它仍然无法正常工作
{% url 'blog:detail' p.slug %}
我得到的错误是
Reverse for 'detail' with arguments '(u'third-post',)' and keyword arguments '{}' not found.
Post模型
class Post(models.Model):
title = models.CharField(max_length = 225)
body = models.TextField()
slug = models.SlugField()
pub_date = models.DateTimeField()
modified = models.DateTimeField(auto_now=True)
created = models.DateTimeField(auto_now_add=True)
def __unicode__(self):
return self.title
管理员更新
class PostAdmin(admin.ModelAdmin):
prepopulated_fields = {"slug" : ("title",)}
admin.site.register(Post, PostAdmin)
如果这个工程
<a href="{% url 'blog:detail' p.id %}">{{p.title}}</a>
为什么不这项工作
<li><a href="{% url 'blog:detail' p.slug %}">{{p.title}}</a></li>
更新
PostDetailVie w^
class PostDetailView(DetailView):
template_name = 'blogapp/post/detail.html'
def get_object(self):
return get_object_or_404(Post, slug__iexact = self.kwargs['slug'])
因此,您希望博客帖子的网址是'/ blog/second-post'而不是'/ blog/2'吗? – Ngenator 2013-03-04 00:51:29
是的,我想要的网址是/博客/第二后 – iJK 2013-03-05 00:54:32