嗯,它终于发生了,我偶然发现了一个没有任何谷歌帮助的问题。 (虽然我可能只是朝着错误的方向看,在这种情况下,任何指向正确方向的指针都会很棒。)
我正在尝试从模型的函数中找到一种返回指向url(带有变量参数)的链接的方法。例如,如果我有模型:
class Picture(models.Model):
picture_id = models.AutoField(primary_key=True)
...
def picture_details(self):
return "{%url picture_details " + str(self.picture_id) + " %}"
我想在模板上为Picture对象'pic'创建一个链接:
...
<a href="{{pic.picture_details}}" > details </a>
...
链接到名为'picture_details'的网址。但是,模板中生成的链接是“http:// ..... {%url picture_details x%}”(x是picture_id)。
我理解使用<a href = {% url picture_details pic.picture_id %} />
会有效,但我的情况略有不同,因为链接是动态构建的图像映射的一部分。所以,我想要图像映射字符串:
<area shape="some_shape" coords="some_coords" href="{{pic.picture_details}}"/>
使用参数picture_id生成名为“picture_details”的网址链接。
我希望我能够清楚地解释我的问题,但如果需要更多信息,请告诉我。非常感谢您的任何帮助,
格尔茨,
果渣
答案 0 :(得分:3)
在这种情况下,您应该使用reverse
功能。 Reverse
是{% url %}
模板标记的视图对应部分。
from django.core.urlresolvers import reverse
class Picture(models.Model):
picture_id = models.AutoField(primary_key=True)
...
def picture_details(self):
return reverse('picture_details', args = [self.picture_id])
来自文档:
如果您需要在代码中使用与
url
模板标记类似的内容,Django会提供以下方法(在django.core.urlresolvers
模块中):