#html #css #django
Вопрос:
Я настроил свой веб-сайт проекта Django, который представляет собой генератор лабиринтов, чтобы иметь навигационную панель, кнопки которой ссылаются на другие созданные мной страницы.
Например, каталог страницы «стиль» — это просто /стиль, поэтому он открывает страницу, на которую ссылается «стили», а затем, если я нажму кнопку «Домашняя страница» на панели навигации, она перейдет в /home.Все хорошо.
Но когда я перехожу на отдельные страницы лабиринта, ссылки на которые-это просто число(например, 3), если я нажму кнопку навигационной панели, чтобы перейти на главную страницу, а не на http://127.0.0.1:8000/home он пытается перейти к http://127.0.0.1:8000/3/home которого не существует.
Есть ли способ изменить то, как Django обрабатывает ссылки, чтобы удалить каталог перед ним.
Ответ №1:
Предполагая, что вы urls.py
настроены правильно, вы можете использовать {% url %}
тег шаблона следующим образом:
<a href="{% url 'urlname' %}">...</a>
И Django автоматически заменит это фактическим URL- urlname
адресом . Чтобы это сработало, ваши urls.py
пути должны быть определены следующим образом:
path("some/url/here", views.my_view_function, name="urlname")
name
Атрибут является здесь важной частью.
Написав href="3"
, вы просто указываете браузеру, что нужно искать https://example.com/whatever/the/current/url/is/3
, другими словами, это относительно текущей позиции.
Чтобы сделать его абсолютным, вам нужно либо начать с /
(что приведет к созданию URL-адресов относительно текущего домена, например href="3"
https://example.com/3
), либо написать его полностью, включая ту https://example.com/
часть, которая приведет именно туда, куда указано.
Django автоматически позаботится об этом, когда вы используете {% url %}
тег.
Комментарии:
1. Спасибо, добрый сэр, с большой любовью к вам x
2. @comalley_ пожалуйста, не забудьте отметить ответ как принятый, если он решил вашу проблему.