@Dominik09

Как правильно передать параметр в Django в url?

Использую модель slug, чтобы переходить к статьям через названия в адресной строке. В URL прописал все как в документации:
urlpatterns = patterns('content.views',
    url(r'^publication/add/', 'add_publication', name = 'Add_publication'),
    url(r'^publication/(?P<slug>[a-z0-9_-]+)/$', 'get_publication', name = 'Get_publication'),
    url(r'^publication/edit/(?P<slug>[a-z0-9_-]+)/$', 'edit_publication', name = 'Edit_publication'),


Проблема заключается в том, что когда в url я передаю параметр в таком виде:
<a href="{% url 'Edit_publication' publication.slug %}" class="btn btn-warning">Редактировать новость</a>

Выдается ошибка:
NoReverseMatch
Reverse for 'Edit_publication' with arguments '('text-2',)' and keyword arguments '{}' not found. 0 pattern(s) tried: []
Если я напишу в таком виде:
<a href="/publication/edit/{{ publication.slug }}" class="btn btn-warning">Редактировать новость</a>

то все работает без проблем, но так делать во всем сайте неправильно, как вы понимаете. Можете объяснить в чем заключается проблема? Добавлю, что способы наподобии "{% url 'content:edit_publication' publication.slug %}" или "{% url 'Edit_publication' slug=publication.slug %}" я пробовал, не помогает. View скидывать я думаю нет смысла, ибо параметры, исходя из второго способа принимает и работает без проблем.
  • Вопрос задан
  • 997 просмотров
Пригласить эксперта
Ответы на вопрос 2
mututunus
@mututunus
Backend developer (Python, Golang)
Урлы подключены в главном urls.py?
Ответ написан
fox_12
@fox_12 Куратор тега Django
Расставляю биты, управляю заряженными частицами
{% url 'Edit_publication' slug=publication.slug %}
Что выводит? slug пустой?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы