【发布时间】:2023-03-09 13:55:01
【问题描述】:
"...如果你需要在你的代码中使用类似于url模板标签的东西, Django提供了如下函数:reverse()..."
我查看了get_absolute_url() 和reverse 的文档,以及给出的示例:
a href="{{ object.get_absolute_url }}">{{ object.name }} /a>
我没有看到或理解的是,我们如何将 kwargs(名称、自我、ID 等)传递给模型方法,以便它知道要返回 url 的 100 个实例中的哪一个,特别是在我需要的地方在 text、在模板系统之外 中使用它?
a href="name_of_object.get_absolute_url ">对象的文本名称
- 我必须将对象的全名放在 href 中吗?
- 如何改用 self 或 object 或 modelname 等变量?
- 我可以重写 gau 来获取 kwargs 和 self 吗?
- 如果我这样做,我可以将 () 放在 gau 的末尾以接收 kwargs 吗?我们不能在模板中这样做。
- 我可以使用:
a href="self.get_absolute_url(**kwargs) ">对象的文本名称?
或
a href="object.get_absolute_url(self, **kwargs) ">文本名称 对象?
如果是这样,我是否需要在模型上的 gau 定义中添加任何内容以确保将这些 kwargs 传递给返回?
还是我只是将其视为常规外部链接,因此必须对其进行硬编码?
谢谢。 --更新--
@ChidG:感谢您提供如此完整的答案,很抱歉花了这么长时间才回复您。我想稍微澄清一下我的用例,看看这是否会改变你的答案。如果我有十篇文章使用相同的模板,每篇文章仍然是唯一的,并且它们指向不同 url 的链接不会在每篇文章的同一位置。所以我无法在 template 中放置一个(或多个)url 标签,这对所有十篇文章都有用。这就是我在模板中使用 gau / url 标签 outside 的意思。我想做一个简单的搜索和替换,将受影响的文本变成链接。否则,我必须一次一个地手工完成,我认为 不可能 必须这样做。我错过了什么?
【问题讨论】: