使用LoginRequiredMixin不会路由到我指定的“ redirect_field_name”。即使我看到它出现在网址中。
我尝试将带有(LoginRequiredMixin)的网址('user / update /')和命名网址('accounts:profile-update')都放在'redirect_field_name'中,但似乎都无法使重定向正常工作。>
使用src / settings.py中的以下内容时,我可以重定向到工作
LOGIN_REDIRECT_URL = '/user/'
但是我想对不同的视图进行自定义重定向。
class ProfileUpdateView(LoginRequiredMixin, UpdateView):
# http://127.0.0.1:8000/user/update/
login_url = '/login/'
redirect_field_name = 'accounts:profile-update'
# redirect_field_name = '/user/update/'
# neither works above
model = Profile
fields = ['first_name', 'last_name', 'mobile_phone',]
template_name = 'accounts/profile_update.html'
success_url = reverse_lazy('accounts:my-profile-detail')
# PK required in UpdateView, making context['object']
def get_object(self, queryset=None):
if self.request.user.is_authenticated:
queryset = Profile.objects.get(user=self.request.user)
return queryset
# accounts/urls.py
app_name = 'accounts'
urlpatterns = [
# ... some more urls ...
path('update/', ProfileUpdateView.as_view(), name='profile-update'),
]
# src/urls.py
urlpatterns = [
path('', include('django.contrib.auth.urls')),
path('admin/', admin.site.urls),
path('user/', include('accounts.urls')),
]
# src/settings.py
# LOGIN_REDIRECT_URL = '/user/'
# If I uncomment this, it works, but all my login's redirect only to this URL if I use LoginRequiredMixin :(```
答案 0 :(得分:1)
您误解了redirect_field_name
的功能。
redirect_field_name
控制字段的名称,而不控制您重定向到的URL。例如,设置redirect_field_name = 'nextpage'
意味着LoginRequiredMixin
将重定向到/login/?nextpage=/user/update/
而不是/login/?next=/user/update/
。
您通常不想覆盖redirect_field_name
。坚持使用默认值next
更容易。
LoginRequiredMixin
应该在登录后自动重定向到上一页。如果不是之后,则您已删除redirect_field_name
并重试,则可能是问题所在在您的登录视图或模板中。