Как программно изменить url (Django)?
Столкнулась с таким вопросом: можно ли во view изменить url страницы?
Допустим, есть страница отдельной статьи блога с таким url (aviary-ensemble - это slug статьи):
http://127.0.0.1:8002/articles/article/aviary-ensemble/
Сейчас я делаю систему комментариев и форма для написания комментария находится на той же странице.
Вьюшку для создания нового комментария я оформила следующим образом: если нет отправленных данных, то загружать страницу, если есть - то на основе этих данных создавать комментарий и загружать страницу.
def details(request, slug, author=None):
article = models.Article.objects.get(slug=slug)
print(author)
if request.method == 'POST':
if author is not None:
user = User.objects.get(username=author)
print(user.username, type(user))
comment_author = UserProfile.objects.get(user=user)
comment = request.POST['comment_area']
if comment[0] == '@':
receiver = comment[1:].split(', ')[0]
comment_text = comment[1:].split(', ')[1]
models.Comment.objects.create(article=article, author=comment_author, receiver=receiver,
text=comment_text)
else:
models.Comment.objects.create(article=article, author=comment_author, text=comment)
article_comments = models.Comment.objects.filter(article=article)
context = {
'article': article,
'article_comments': article_comments
}
request.path_info = '/articles/article/' + str(article.slug) + '/'
return render(request, 'articles/article.html', context=context)
else:
article.views = article.views + 1
article_comments = models.Comment.objects.filter(article=article)
context = {
'article': article,
'article_comments': article_comments
}
return render(request, 'articles/article.html', context=context)
Сами url выставила следующим образом:
urlpatterns = [
path('', views.index, name='articles_catalog'),
path('article/<slug:slug>/<str:author>/', views.details, name='comment_creation'),
path('article/<slug:slug>/', views.details, name='details'),
]
Нюанс в том, что после отправки формы url меняется на
http://127.0.0.1:8002/articles/article/aviary-ensemble/admin/
(admin - это username активного User-а, который является автором комментария)
Собственно, чего я хочу добиться: после отправки формы хотелось бы, что бы url менялся на http://127.0.0.1:8002/articles/article/aviary-ensemble/
,то есть без дополнения имени.
Я перепроверила - оба url ссылаются на одну вьюшку. Подскажите плиз, можно ли это как-то оформить?