2010-09-18 6 views
0

Ну, наконец-то это произошло, и я наткнулся на проблему, для которой не помогло никакое количество googleing. (Хотя я могу просто смотреть в неправильном направлении, и в этом случае любые указатели в правильном направлении были бы замечательными)., возвращающий ссылку на именованный URL-адрес из функции модели

Я пытаюсь найти способ вернуть ссылку на именованный 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 «ПИК» на шаблоне:

... 
    <a href="{{pic.picture_details}}" > details </a> 
    ... 

Это ссылки на URL с именем ' 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}}"/> 

, чтобы привести ссылку на URL с именем «picture_details» с аргументом picture_id.

Надеюсь, что я смог четко объяснить свою проблему, но если вам нужна дополнительная информация, пожалуйста, дайте мне знать. Большое спасибо заранее за любую помощь,

Greetz,

Марк

ответ

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 модуле):

+0

Большое спасибо Manoj! –

+0

Я пытался выяснить, для чего «обратное», и все это начинает иметь смысл. Еще раз, документация Django существует, чтобы спасти мир от катастрофы (если вы знаете, с чего начать искать). –

 Смежные вопросы

  • Нет связанных вопросов^_^