Можно ли установить значение словаря URL path () третьего параметра с параметром тега шаблона URL в django? - PullRequest
0 голосов
/ 02 марта 2020

Мне нужно передать дополнительный параметр в URL, но я не хочу добавлять его в шаблон URL. Читая django документы, я наткнулся на this , что немного похоже на:

urlpatterns = [
    path('blog/<pk>/', views.year_archive, {'foo': 'bar'}),
]

Звучит так, как мне нужно, но есть ли способ установить значение ' bar 'с URL-тегом, что-то вроде:

data-url="{% url 'name_of_view' pk=obj.id foo=obj.bar %}"  or...
data-url="{% url 'name_of_view' obj.id obj.bar %}"  or... ???

Также пробовал такие вещи, как:

path('blog/<pk>/', views.year_archive, {'foo': <bar>}),
path('blog/<pk>/', views.year_archive, {'foo': self.bar}), #don't know why I think that would work

Конечно, ничего из этого не работает. Я могу передать obj.bar через собственный шаблон URL, который достаточно прост, но это нарушает некоторый другой зависимый код. Ищите другой способ, и словарь URL-адреса третьего варианта выглядит многообещающим, если я смогу заставить его работать, но пока не могу установить значение из шаблона.

1 Ответ

0 голосов
/ 04 марта 2020

Иэн Шелвингтон поставил меня на правильный путь. Напомним, у меня был параметр, который я хотел передать через URL, но добавление его в шаблон URL (даже с отдельным выделенным шаблоном) сломало некоторые другие зависимые биты в моем случае.

Я смог передать свой параметр (obj.brand_slug) таким образом:

шаблон:

<button type="button" class="btn btn-outline-dark btn-block btn-sm js-ajax-selector"
            data-url="{% url 'profile_select' product.id %}?brand={{obj.brand_slug}}">
            <b>{{product.full_product_name}}</b>
        </button>

И подберите его в виде ..

просмотров .py:

def product_selector(request, pk):
    profile_slug = request.GET['brand']
    # logic to work with profile slug here...

Легко! Спасибо, Йен. Работает как шарм.

...