从模型函数返回指向URL的链接

时间:2010-09-18 10:48:54

标签: django url imagemap named

嗯,它终于发生了,我偶然发现了一个没有任何谷歌帮助的问题。 (虽然我可能只是朝着错误的方向看,在这种情况下,任何指向正确方向的指针都会很棒。)

我正在尝试从模型的函数中找到一种返回指向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”的网址链接。

我希望我能够清楚地解释我的问题,但如果需要更多信息,请告诉我。非常感谢您的任何帮助,

格尔茨,

果渣

1 个答案:

答案 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模块中):