django Удаление жестко закодированных URL в шаблонах - PullRequest
0 голосов
/ 01 июля 2018

Я знаю, что в файл шаблона я могу включить этот код, который будет возвращать список ссылок

{% for q in all %}
    <ul>
        <li><a href={% url 'detail' q.id %}>{{ q.question_text }}</a></li>
    </ul>
{% endfor %}

Теперь django будет искать имя 'detail' в файле urls.py моего каталога приложений и автоматически присвоит этому аргументу значение q.id. Но что, если у меня есть URL-адрес, который содержит более 1 переменной. Так что здесь я могу привести только один аргумент, т.е. q.id. Но что, если я хочу привести более одного аргумента? Надеюсь, я ясно

1 Ответ

0 голосов
/ 01 июля 2018

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

Если у нас есть, например, следующий URL:

    url(r'^detail/<b>(?P<year>(\d+))</b>/<b>(?P<name>(\w+))</b>/$', views.detail),

Мы можем видеть этот URL-адрес как виртуальную функцию, которая будет принимать такие параметры, как:

def some_url(year, name):
    # ...
    pass

Таким образом, мы можем создать этот URL с неназванными параметрами :

{% url 'detail' <b>1981 q.name</b> %}

или с именованными параметрами:

{% url 'detail' <b>name=q.name year=1981</b> %}
...