Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 获取\u绝对\u url并在模板外部反转_Html_Django - Fatal编程技术网

Html 获取\u绝对\u url并在模板外部反转

Html 获取\u绝对\u url并在模板外部反转,html,django,Html,Django,…如果您需要在代码中使用类似于url模板标记的内容,Django提供以下功能:reverse 我查看了和的文档,以及给出的示例: a href={{object.get\u absolute\u url}}>{{{object.name}}/a> 我没有看到或理解的是,我们如何将kwargs名称、self、ID等传递给model方法,以便它知道要返回url的100个实例中的哪一个,特别是在模板系统之外需要在文本中使用url的地方 a href=name\u of_object.get_absol

…如果您需要在代码中使用类似于url模板标记的内容,Django提供以下功能:reverse

我查看了和的文档,以及给出的示例:

a href={{object.get\u absolute\u url}}>{{{object.name}}/a>

我没有看到或理解的是,我们如何将kwargs名称、self、ID等传递给model方法,以便它知道要返回url的100个实例中的哪一个,特别是在模板系统之外需要在文本中使用url的地方

a href=name\u of_object.get_absolute\u url>对象的文本名称

我必须在href中输入对象的全名吗? 如何使用self、object或modelname等变量? 我可以重写gau,让它和self一样接受kwargs吗? 如果我这样做了,我能把枪放在高卢的尽头去接收夸尔格人吗?我们不能在模板中这样做。 我可以使用: a href=self.get_absolute_url**kwargs>对象的文本名?

a href=object.get_absolute_urlself,**kwargs> 反对

如果是这样的话,我是否需要在我的模型上对gau的定义添加任何内容,以确保这些KWARG被传递到返回

或者我只是把它当作一个常规的外部链接,因此必须对它进行硬编码

谢谢。 -更新-


@ChidG:谢谢你这么完整的回答,我很抱歉花了这么长时间才回复你。我想澄清一下我的用例,看看这是否会改变你的答案。如果我有十篇文章使用相同的模板,那么每篇文章仍然是唯一的,它们指向不同URL的链接不会在每篇文章的相同位置。因此,我没有办法在模板中放置一个或多个url标记,这将对所有十篇文章都有用。这就是我在模板外使用gau/url标记的意思。我想做一个简单的搜索和替换,将受影响的文本变成链接。否则,我就不得不一次一个地手工完成,我认为这不是必须完成的方式。我遗漏了什么?

当Django的文档说“在模板系统之外”时,它们的意思是在Python代码中,在views.py或models.py或任何.py文件中。你给出的例子都是HTML,它们都有一个标签,所以看起来你在谈论HTML

如果它是HTML,那么它就不在模板系统之外,因此您提到的Python函数将无法工作。您需要使用Django模板标记

关于这个问题:

我没有看到或理解的是,我们如何将kwargs名称、self、ID等传递给model方法,以便它知道要返回url的100个实例中的哪一个,特别是在模板系统之外需要在文本中使用url的地方

纯Python中的{object.get_absolute_url}}或object.get_absolute_url不需要kwarg,因为模型上的get_absolute_url方法已经知道如何使用所需的kwarg生成正确的url。如果由于您的特定URL配置,它还不知道如何执行此操作,那么您可以编写一个自定义的get_absolute_URL方法来启用此功能

无论何时从Django视图返回HTML文件,除非您正在做一些非常规的事情,否则您都在使用模板系统。在使用模板系统时,使用{{}引用Django上下文变量,使用{%}引用自定义标记。因此,要将URL插入到模板中,无论它是插入到a标记中还是插入到文本中,都将使用大括号,它将是{{object.get_absolute_URL}}或使用URL标记本身,{%URL'whatever_URL_name'kwarg=value%}

我必须在href中输入对象的全名吗? 您必须在模板上下文中放置引用对象的上下文变量

如何使用self、object或modelname等变量? 可以为上下文变量使用任何您喜欢的名称。如果您使用的是Django的基于类的视图,那么对于单个对象视图,默认情况下它将是object,但是您可以使用视图上的context\u object\u name属性将其更改为任意值

我可以重写gau,让它和self一样接受kwargs吗? 这是没有必要的。get_absolute_url返回完整的url,它只需要模型实例。模型实例必须能够使用自己的get_absolute_url方法找到自己的url,而无需任何进一步的Kwarg

我可以使用: 正确的语法在Django文档中清楚地展示了您链接到的get_absolute_url:

<a href="{{ object.get_absolute_url }}">{{ object.name }}</a>