[英]Django how to use login_required with TokenAuthentication
[英]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.