簡體   English   中英

登錄后如何重定向到用戶請求的URL-Django loginrequiredmixin

[英]How can I redirect to user requested url after login - Django loginrequiredmixin

我正在嘗試使用Django LoginRequiredMixin限制對視圖的訪問。 如果用戶未登錄,它將重定向到登錄頁面。 但是問題是登錄后沒有重定向到用戶鍵入的url,而是轉到默認頁面?

例如,用戶嘗試登錄site / site-create頁面。 如果用戶未登錄,則轉到登錄頁面。 登錄后進入默認的登錄頁面,這里我想將用戶重定向到site / site-create頁面。

class CreateSite(LoginRequiredMixin, CreateView):
    model = Site
    fields = ['name','site_category','description',]

登錄/ views.py

class LoginViewClass(FormView):
    """
    Provides the ability to login as a user with a username and password
    """
    form_class = AuthenticationForm
    template_name = 'login/login_view_class.html'

    def get_context_data(self, **kwargs):
       context = super(LoginViewClass, self).get_context_data(**kwargs)
       create_all_menus(ALL_MENUS)
       return context

    def post(self, request):
        username = self.request.POST['username']
        password = self.request.POST['password']
        user = authenticate(username=username, password=password)

編輯->登錄views.py添加了怎么辦? 謝謝

LoginRequiredMixin將重定向到login_url並將原始URL添加為參數redirect_field_name (鏈接到代碼)

login_urlredirect_field_name是可以在視圖中定義的兩個屬性,如下所示:

class MyView(LoginRequiredMixin, View):
    login_url = '/login/'
    redirect_field_name = 'redirect_to'

此示例將重定向到/login/?redirect_to={current_url}

如果未指定,則這兩個字段具有默認值:


在您的情況下,您的登錄視圖似乎沒有next URL參數。 這兩個選項是:

  • 更改登錄視圖采用next URL參數。
  • 通過添加redirect_field_name = 'your_field_name'更改視圖以發送正確的重定向字段名稱

暫無
暫無

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

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