首页 > 解决方案 > Django 2.2 默认登录网址

问题描述

我想加载 Django 内置登录页面,但不使用 URL http://127.0.0.1:8000/login/,而不是这个我试图加载登录页面,如这个 URL http://127.0.0.1: 8000/

我努力了 :

LOGIN_URL ='/login/' - (in settings.py)
@login_required()- (in the app view.py)
@login_required(login_url='/login/')  - (in the app view.py)

这两种方法都没有帮助我,请有人帮我解决这个问题。

项目地址.py

urlpatterns = [
    path('admin/', admin.site.urls),       
    path('',include('home.urls')),
]

我在底部包含的项目 settings.py 如下所示

LOGIN_URL='/login/'

LOGIN_REDIRECT_URL= 'home'
LOGOUT_REDIRECT_URL ='home'

在我的应用网址中

#
from django.urls import path, include
from home.views import HomeView
urlpatterns = [     
    path('',include('django.contrib.auth.urls')),
    path('home',HomeView, name='home'),
]

在应用程序视图.py

from django.http import HttpResponse
from django.shortcuts import render

@login_required(login_url='/login/') 
def HomeView(request): 
  return render(request, "home.html")  

总的来说,我希望加载 Django 默认登录页面而不在 url 中传递 /login/ 或 account/login 。

标签: djangodjango-formsdjango-templatesdjango-viewsdjango-urls

解决方案


你可以使用一个泛型类

from django.contrib import admin
from django.urls import path, include
from django.views.generic.base import RedirectView

urlpatterns = [
  path('', RedirectView.as_view(url='/admin/'), name='django_admin'),
  path('admin/', admin.site.urls),
  path('other/', include('other.urls')),
]

https://docs.djangoproject.com/en/2.2/ref/class-based-views/base/


推荐阅读