[英]Django HTTPResponseRedirect & Reverse with optional parameter
[英]HttpResponseRedirect Reverse not working Django
在向同一頁面提交點贊按鈕后,我試圖重定向我的頁面,但我不斷收到
NoReverseMatch at /score/like/2
這是網址
urlpatterns = [
path('user/<str:username>', UserPostListView.as_view(), name='user-posts'),
path('', PostListView.as_view(), name='score'),
path('<int:pk>/', PostDetailView.as_view(), name='post-detail'),
path('like/<int:pk>', LikeView, name='like_post'),
這里是意見
def LikeView(request, pk):
post = get_object_or_404(Post, id=request.POST.get('post_id'))
post.likes.add(request.user)
return HttpResponseRedirect(reverse('post-detail', args=[str(pk)])) <-----Error highlighting here
這是模板
<form action="{% url 'score:like_post' post.pk %}" method='POST'>
{% csrf_token %}
<button type='submit' name='post_id' class= "btn btn-primary btn-sm" value="{{post.id}}"> Like </button>
</form>
<strong>{{post.total_liked}} Likes </strong>
給定模板,您的urls.py
指定一個app_name
。 您需要在視圖名稱中使用它作為前綴。
此外,您可以使用redirect(…)
[Django-doc] ,它調用reverse
並將結果包裝在HttpResponseRedirect
中(因此它刪除了一些樣板文件):
from django.shortcuts import redirect
def LikeView(request, pk):
post = get_object_or_404(Post, id=request.POST.get('post_id'))
post.likes.add(request.user)
return redirect('score:post-detail', pk=pk)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.