2016-06-02 3 views
0

У меня есть таблица с результатами поиска. Это означает, что здесь нет моделей. Проблема в том, что я хотел бы перейти на страницу подробностей для элемента с кликом, но я не уверен, могу ли я это сделать, не помещая его в URL-адрес.Django с использованием переменной в нескольких представлениях/шаблонах

Прямо сейчас это делается так:

В моей .html для каждого элемента в таблице:

<a href="{% url 'detail' title=item.name %}">view more</a></td> 

В моей urls.py

url(r'^track/(?P<title>.+?)/$', detail, 
      name='detail'), 

На мой взгляд, подробно , где он использует переменную:

def detail(request, title): 
    if request.method == 'GET': 
     ... 

Теперь это может сработать, но это не идеально для меня. URL-адрес содержит пробелы и не является urlencoded, потому что мне нужна переменная, как есть. Мне было интересно, есть ли более простой или лучший способ передать эту переменную другому виду или шаблону

ответ

0

Правильный способ сделать это - определить метод get_absolute_url для класса модели для вашей модели item. Обычно это делается с помощью reverse, так что это будет выглядеть примерно так:

def get_absolute_url(self): 
    from django.core.urlresolvers import reverse 
    return reverse('detail', kwargs={'title': self.title}) 

Затем в шаблоне вы просто сделать:

<a href="{{ item.get_absolute_url }}">view more</a> 

И название будет правильно убежали.

При этом вы можете использовать slug вместо названия для создания своих URL-адресов.

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