我正在尝试使用 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已添加 我怎样才能做到这一点?谢谢
答案 0 :(得分:2)
LoginRequiredMixin
将重定向到login_url
,将原始网址添加为参数redirect_field_name
https://www.w3schools.com/angular/ng_ng-style.asp。
login_url
和redirect_field_name
是您可以在视图中定义的两个属性,如下所示:
class MyView(LoginRequiredMixin, View):
login_url = '/login/'
redirect_field_name = 'redirect_to'
此示例将重定向到/login/?redirect_to={current_url}
当未指定时,这两个字段具有默认值:
login_url
默认为settings.LOGIN_URL
(link to code) redirect_field_name
默认为值next
(link to code) 在您的情况下,您的登录视图似乎没有next
网址参数。这两个选项是:
next
网址参数。redirect_field_name = 'your_field_name'