簡體   English   中英

由django中間件引起的重定向循環

[英]Redirect loop caused by django middleware

我正在嘗試在注冊后立即重定向用戶以轉到協議條款頁面。

這是我的中間件課程:

class TermsMiddleware(object):

    def process_request(self, request):
        if request.user.profile.filled_terms is None:
            return redirect(reverse('terms')) 

我收到以下錯誤,可以快速瀏覽一下我的服務器:

This webpage has a redirect loop

我有一個帶有fill_terms字段的Profile模型類。

我有一個術語模板,當我手動訪問它時,它工作得很好。

這也是我的網址匹配器:

url(r'^terms/', 'hana.views.terms', name='terms')

如何擺脫這種重定向循環,使注冊用戶通過中間件重定向到協議條款頁面?

好了,也處理了對條款頁面的請求,如果filled_termsNone ,它將重定向到“條款”頁面,這就是您的循環。

因此,解決此問題的一種方法是檢入中間件,當前請求是否用於重定向頁面的路徑:

class TermsMiddleware(object):

    def process_request(self, request):
        if request.user.profile.filled_terms is None:
            if not request.path == reverse('terms'):
                return redirect(reverse('terms'))

這樣,僅當請求不針對重定向頁面時,才執行重定向。

暫無
暫無

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

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