【发布时间】:2013-04-28 11:26:49
【问题描述】:
我正在尝试为Entry 类设置get_absolute_url() 函数,但失败了。我已经成功地为 Category 类创建了这样一个函数,只有一个 arg,但我坚持使用多个 args,就像在 Entry 类中一样。
目前,点击一个
<a href="/blog/{{ entry.get_absolute_url }}/">{{ entry.title }}</a>`
链接,显示在我的索引页面上,只返回下面的 url:
http://127.0.0.1:8000/blog//
我最初使用没有反向的 return 是这样的:
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 上,包括 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)
通过将 category.html 中的 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 不同。它做了一些不同的事情,就像以前我在没有 root 的情况下使用 "blog/{{ category.get_absolute_url }}" 时一样,从 return 切换到 return reverse() 使它工作;虽然我现在已经设法让它与return 一起工作,但通过将根添加到href 就像我对Entry 所做的那样。
【问题讨论】:
标签: python django python-2.7