Как заставить Django правильно писать ссылки на страницы?

Я настроил свой сайт проекта Django, который представляет собой генератор лабиринтов, на навигационную панель, кнопки которой ссылаются на другие страницы, которые я сделал.

Например, каталог страницы стилей - просто /style, поэтому он вызывает страницу, на которую ссылается styles, затем, если я нажимаю кнопку homepage на навигационной панели, она переходит на /home все хорошо.

Но когда я перехожу на отдельные страницы лабиринта, ссылки на которые - это просто номер (например, 3), если я нажимаю на кнопку навигатора, чтобы перейти к домашней странице, вместо того, чтобы перейти к http://127.0.0.1:8000/home, он пытается перейти к http://127.0.0.1:8000/3/home, который не существует.

Есть ли способ изменить то, как Django обрабатывает ссылки, чтобы удалить каталог перед ним.

навбар html код

страница урлов в django

Предполагая, что ваш 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 %}.

Вернуться на верх