我是django的新手,我在Django中有不同的选择。我创建了一个基于类的视图,需要用户身份验证才能查看网页。我正在使用内置的LoginView。
当url模式指定如下时
url(r'^login/', auth_views.LoginView.as_view(),name='login'),
它被正确地重定向到登录页面。
但是当我付出时
url(r'^restaurant/login/', auth_views.LoginView.as_view(),name='login'),
尝试访问需要用户身份验证的页面时,我收到404。但是当我在浏览器中手动转到该URL时,它的工作原理非常好。这是为什么?这两种情况都不应该起作用吗?
听起来你需要在你的设置中设置LOGIN_URL
:
LOGIN_URL = '/restaurant/login/'
或者,最好使用URL模式名称,然后在更改登录URL时不必更新设置
LOGIN_URL = 'login'
不确定我是否完全理解你的问题,只是试着给出一个愚蠢的答案。
Django 2.1.7
# settings.py
LOGIN_URL = 'admin:login'
login_required
装饰将指导您正确的登录页面。from django.contrib.auth.decorators import login_required
@login_required()
def month_archive(request, year, month):
production_list = Production.objects.month_archive(year, month)
context = {'production_list': production_list}
return TemplateResponse(request, 'production/production_list.html', context)
from django.contrib.auth.decorators import login_required
urlpatterns = [
path('', login_required(views.ProductionList.as_view()), name='production-list'),
path('<int:year>/<int:month>/', views.month_archive, name='production-month'),
]