URL - Ошибки вывода в шаблон.
Небольшая заметка на тему вывода ссылок в шаблон.
Столкнулся с проблемой относительных ссылок при выводе в шаблон. Постоянные ссылки работаю прекрасно, но если вы хотите, чтоб была возможность вывода относительных ссылок, то тут нужно соблюдать одно простое правило, которое написано ниже в статье.
Так же это и многое другое обсуждается в школе программирования Python/Django в которой я на данном этапе прохожу обучение.
Написал функцию, сделал урл и вывел в шаблон - получил ошибку!
Функция
def track_url(reguest):
page_id = None
url = '/rango/'
if reguest.method == 'GET':
if 'page_id' in reguest.GET:
page_id = reguest.GET['page_id']
try:
page = Page.objects.get(id=page_id)
page.views = page.views + 1
page.save()
url = page.url
except:
pass
return redirect(url)
Урл
url(r'^goto/', views.track_url, name='track_url'),
Вывод в шаблон
<li><a href="{% url 'goto' %}?page_id={{page.id}}" target="_blank">{{ page.title }}</a></li>
Проблема заключается в том, что имя функции и имя урла разные, поэтому джанго не знает к чему сопаставить данный урл 'goto'.
Решение само очевидно. Называть нужно одинаково имя функции и имя урла, тогда и в шаблоне он будет работать.
В моем случае все заработало после исправления ссылки на имя функции!
<li><a href="{% url 'track_url' %}?page_id={{page.id}}" target="_blank">{{ page.title }}</a></li>
Еще как вариант можно было вывести так:
{% url 'rango.views.track_url' %}
Т.е. в ссылке указываем путь к функции, это имя приложения, имя файла функции и имя самой функции.
Была ли вам полезна эта статья? Ниже вы можете поставить лайки и оставить комментарий!
Ваши комментарии
Комментарии могут оставлять только зарегистрированые пользователи!