Django: переход по url не работает, как это исправить?
Добрый день! Столкнулся с такой ошибкой: при нажатии на ссылку, url меняется, но переход на другую страницу не работает.
Точнее:
Имеется страница, на которой отображается информация о статье (test - slug статьи): http://127.0.0.1:8001/articles/article/test/
url для перехода на страницу обновления: http://127.0.0.1:8001/articles/article/test/update/
Состав файла urls.py:
urlpatterns = [
path('', views.index, name='articles_catalog'),
path('article/<slug:slug>/<str:author>/', views.details, name='comment_creation'),
path('article/<slug:slug>/update/', views.update_article, name='update_article'),
path('article/<slug:slug>/', views.details, name='details'),
path('new_article/', views.new_article, name='new_article')
]
Ссылка для перехода на:
<a
href="{% url 'articles:update_article' slug=article.slug %}"
id="update_article"
target="_self"
rel="noreferrer noopener"
class="thq-button-filled thq-button-animated"
>
UPDATE
</a>
Сам вид:
@login_required()
def update_article(request, slug):
print('OK1')
article = Article.objects.get(slug=slug)
tags = Tag.objects.all()
if request.method == 'POST':
print('POST')
else:
form = ArticleForm(instance=article)
return render(request, 'articles/create-update.html', {'form': form, 'tags': tags})
В результате, когда я нажимаю на ссылку, url в адресной строке меняется, но сама страница - остается прежней.
Пожалуйста, подскажите, что я мог упустить.
Маршрут article/<slug:slug>/<str:author>/
совпадает раньше, чем article/<slug:slug>/update/
, потому что "update" - это допустимая строка author
. Измените порядок этих URL так, чтобы маршрут update
был первым.
Это также означает, что "update" - это особое значение, и у вас никогда не может быть автора с именем "update", что вы должны как-то обеспечить.