URL - Ошибки вывода в шаблон.

    blazer |   27.01.2016 |   15:10:51 |   Django |

Небольшая заметка на тему вывода ссылок в шаблон.

Столкнулся с проблемой относительных ссылок при выводе в шаблон. Постоянные ссылки работаю прекрасно, но если вы хотите, чтоб была возможность вывода относительных ссылок, то тут нужно соблюдать одно простое правило, которое написано ниже в статье.

Так же это и многое другое обсуждается в школе программирования 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' %}

Т.е. в ссылке указываем путь к функции, это имя приложения, имя файла функции и имя самой функции.

Была ли вам полезна эта статья? Ниже вы можете поставить лайки и оставить комментарий!

Ваши комментарии

Комментарии могут оставлять только зарегистрированые пользователи!

Disqus - комментарии

blog comments powered by Disqus