簡體   English   中英

HttpResponseRedirect 反向不工作 Django

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM