A_K*_*A_K 5 python django django-urls django-views django-authentication
http://127.0.0.1:8000/在我的 Django 项目中,如果用户未登录,我试图将主页重定向到登录页面,但有一个已登录的用户我想http://127.0.0.1:8000/成为http://127.0.0.1:8000/username/
我尝试了不同的答案,但没有具体的答案:这是登录后的登录视图:
class LoginView(LoginView):
template_name = 'login.html'
def get_success_url(self):
user=self.request.user.username
return f'/{user}/'
Run Code Online (Sandbox Code Playgroud)
这是登录网址:
path('accounts/login/', LoginView.as_view(redirect_authenticated_user=True,template_name='users/login.html'), name='login'),
Run Code Online (Sandbox Code Playgroud)
这是主页视图:
class home(LoginRequiredMixin, ListView):
model = Item
template_name = 'app/home.html'
context_object_name = 'items'
Run Code Online (Sandbox Code Playgroud)
这是应用程序网址:
path('<str:username>/', home.as_view(), name='home'),
Run Code Online (Sandbox Code Playgroud)
我的问题:
http://127.0.0.1:8000/username/如果用户已登录,则如何重定向主页login page
小智 5
您可以使用settings.LOGIN_URL等等settings.LOGIN_REDIRECT_URL:
class LoginView(LoginView):
template_name = 'login.html'
login_url='login'
def get_success_url(self):
user=self.request.user.username
return reverse('home', args=(user))
Run Code Online (Sandbox Code Playgroud)
在设置.py中:
LOGIN_URL='some_app_name:login' #Redirect to login page if not logged in.
LOGIN_REDIRECT_URL='some_app_name:home' #Redirect to home page after successful login
Run Code Online (Sandbox Code Playgroud)
如果未在视图中指定,则默认为settings.pyLOGIN_URL和。LOGIN_REDIRECT_URL
Note:将视图与实际身份验证视图命名相同并不是一个好习惯,因此它应该是MyLoginView或者您可以提供的任何内容,而不是实际的视图名称。
| 归档时间: |
|
| 查看次数: |
401 次 |
| 最近记录: |