我正在尝试为get_absolute_url()
类设置Entry
函数,但失败了。我已成功为Category
类创建了这样一个函数,只有一个arg,但我仍坚持使用Entry
类中的多个args。
目前,点击
<a href="/blog/{{ entry.get_absolute_url }}/">{{ entry.title }}</a>`
链接,如我的索引页面上所示,仅返回以下网址:
http://127.0.0.1:8000/blog//
我最初使用的是没有反向的退货:
def get_absolute_url(self):
return "/%s/%s/%s/" % (self.pub_date.year, self.pub_date.month, self.slug)
但是,虽然它从index.html开始使用前面提到的href
,但是从其他页面(即category.html
)开始工作,这会返回一个URL,并附加在当前URL上,包括{{{ 1}}类。切换到反向修复了Category
的此问题,但由于多个参数,我无法使其适用于Category
。
请根据需要请求任何其他数据。
编辑嗯,我已成功使用(原始代码):
Entry
将category.html的def get_absolute_url(self):
return "%s/%s/%s/%s" % (self.pub_date.year, self.pub_date.month, self.pub_date.day, self.slug)
更改为:
href
即。我添加了根<a href="http://127.0.0.1:8000/blog/{{ entry.get_absolute_url }}">{{ entry.title }}</a>
,但我仍然无法使用http://127.0.0.1:8000
...我已尝试reverse()
,args
,其他一些事情......我确实不确定kwargs
对常规reverse()
的不同之处。它做了不同的事情,就像之前我使用return
而没有根一样,从"blog/{{ category.get_absolute_url }}"
切换到return
使它工作;虽然我现在设法让它只与return reverse()
一起使用,但是将{@ 1}}添加到return
,就像我使用href
一样。
答案 0 :(得分:0)
您可以反向使用kwargs
。类似的东西:
假设您的博客详细信息的网址格式如下:
url(r'^blog/(?P<year>)/(?P<month>)/(?P<slug>[-\w]+)/$', 'details', name='blog_details')
您可以将get_absolute_url写为:
def get_absolute_url(self):
return reverse('blog_details', kwargs={'year': self.pub_date.year,
'month': self.pub_date.month,
'slug': self.slug})
在您使用时在模板中使用它。