включение / передача slug и pk (или любой другой переменной) в url conf

#django #django-templates

#django #django-шаблоны

Вопрос:

В настоящее время моя конфигурация выглядит примерно так:

urls.py:

 url(r'^(?P<slug>[-_~w] )/$', SomeDetailView.as_view(), name='detail'),
  

views.py простая ваниль такая:

 class GetDetailView(SomeDetailViewMixin, DetailView):
    model = Dummy
    template_name = "detail.html"
  

и html выглядит так:

 <h2><a href="{% url 'detail' i.slug %}" rel="nofollow"></a>Text</h2>
  

.. и все работает отлично. Однако то, что я сейчас ищу, — это передать другую переменную (например, pk — say var2 ) через html в url conf. Итак, что-то вроде:

html (который является ListView ):

 <h2><a href="{% url 'detail' i.slug i.var2 %}" rel="nofollow"></a></h2>
  

и urls.py что — то вроде:

 url(r'^(?P<slug>[-_~w] )/$', SomeDetailView.as_view(), kwargs={'var2': var2}, name='detail'),
  

возможно ли что-то в этом роде? Чего я не хочу, так это включать var2 в сам URL (потому что var2 есть ugly )…

Я помню, как делал что-то в этом роде год назад, но моя память снова подвела меня…

Был бы признателен за любую помощь в этом…

Ответ №1:

Это должна быть информация, которую вы можете определить сами по i себе. Так что вам это вообще не нужно в теге шаблона url. итак, поскольку вы уже получили DetailView доступ к нему из объекта через

  self.get_object().var2
  

Комментарии:

1. Проблема в том, что я переопределяю get_object метод в SomeDetailViewMixin (причина в том, что я запрашиваю внешнюю базу данных ключ-значение).. Итак, мне нужно это var2 через url…

2. @JohnJ — Как вы это переопределяете? Я надеюсь, что он по-прежнему дает вам тот же экземпляр i , который вы запрашиваете через его slug, если вам это нужно через URL, тогда он должен быть частью URL, я боюсь

3. Я работаю с Django без БД .. так что у меня вроде как нет экземпляров .. 🙁

4. @JohnJ — Я не думаю, что кто-нибудь сможет помочь без дальнейшего объяснения этого в вашем вопросе. У вас должен быть какой-то способ получения объекта, поскольку вы ссылаетесь на его slug