0

好吧,它终于发生了,我偶然发现了一个问题,谷歌搜索无济于事。(虽然我可能只是看错了方向,但在这种情况下,任何指向正确方向的指针都会很棒)。

我正在尝试找到一种方法来从模型的函数返回指向命名 url(带有可变参数)的链接。例如,如果我有模型:

class Picture(models.Model):
    picture_id = models.AutoField(primary_key=True)
    ...
    def picture_details(self):
        return "{%url picture_details " + str(self.picture_id) + " %}"

我想在模板上为图片对象“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_details”的 URL 的链接,并带有参数 picture_id。

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

问候,

马克

4

1 回答 1

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

于 2010-09-18T10:52:50.360 回答