1

模型.pyurls.pyviews.py

我正在尝试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 附加在当前 URL 上,包括Category类。切换到反向解决了这个问题,但由于多个参数Category,我无法让它工作。Entry

请根据需要索取任何额外的数据。


编辑:好吧,我已经设法使它与(原始代码)一起工作:

def get_absolute_url(self):
    return "%s/%s/%s/%s" % (self.pub_date.year, self.pub_date.month, self.pub_date.day, self.slug)

通过将hrefat category.html 更改为:

<a href="http://127.0.0.1:8000/blog/{{ entry.get_absolute_url }}">{{ entry.title }}</a>

即我添加了 root http://127.0.0.1:8000,但我仍然无法使用它reverse()......我已经尝试过args, kwargs, 其他一些东西......我实际上仍然不确定reverse()与常规的不同之处return。它做了一些不同的事情,就像我以前使用"blog/{{ category.get_absolute_url }}"没有根的情况一样,从切换returnreturn reverse()使其工作;return尽管我现在已经设法让它hrefEntry.

4

1 回答 1

1

您可以使用kwargs反向。就像是:

假设您的博客详细信息的 url 模式如下:

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})

并在您使用时在模板中使用它。

于 2013-04-28T11:51:11.507 回答