簡體   English   中英

如何在django中顯示login_required_message

[英]how to display login_required_message in django

我想顯示login_required消息,就像您必須先登錄才能進行評論,同時重定向到登錄頁面。 我怎樣才能做到這一點。

views.py

@login_required(redirect_field_name='next',login_url='shop:users_signin')
def review(request,slug):
    if request.method == "POST":
        form = ReviewForm(request.POST)
        if form.is_valid():
            review = form.save(commit=False)
            review.product = Product.objects.get(slug=slug)
            review.user = request.user
            review.save()
            messages.success(request, 'Review Saved.')
            return redirect('shop:detail', slug)
    else:
        return redirect('shop:detail',slug)

@login_required裝飾器是為了方便起見,但自定義行為並不容易。 如果使用CBV,則LoginRequiredMixin使其更容易,因為可以在重定向發生之前重寫handle_no_permission()以向request添加消息。

因此,如果您使用基於簡單函數的視圖來自己編寫身份驗證檢查,那么最好的選擇是:

 def review(request, slug):
     if not request.user.is_authenticated:
         messages.info("You need to be logged in in order to give a review")
         return redirect('%s?next=%s' % (settings.LOGIN_URL, request.path))
     # rest of your view here

然后在您的登錄模板中確保您顯示消息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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