dar*_*ren 15 django django-authentication
我想检查用户是否有权使用某些URL.我正在使用通用视图.
这里的文档说login_required可以作为可选参数传递,但我不确定.这样的事情可能是:(r'^$', 'archive_index', link_info_dict, 'coltrane_link_archive_index', login_required=True,),
我有这个,我希望能够在URL中使用login_required装饰器.可能吗?我该怎么做?
from django.conf.urls.defaults import *
from coltrane.models import Link
link_info_dict = {
'queryset': Link.live.all(),
'date_field': 'pub_date',
}
urlpatterns = patterns('django.views.generic.date_based',
(r'^$', 'archive_index', link_info_dict, 'coltrane_link_archive_index'),
(r'^(?P<year>\d{4})/$', 'archive_year', link_info_dict, 'coltrane_link_archive_year'),
(r'^(?P<year>\d{4})/(?P<month>\w{3})/$', 'archive_month', link_info_dict, 'coltrane_link_archive_month'),
(r'^(?P<year>\d{4})/(?P<month>\w{3})/(?P<day>\d{2})/$', 'archive_day', link_info_dict, 'coltrane_link_archive_day'),
(r'^(?P<year>\d{4})/(?P<month>\w{3})/(?P<day>\d{2})/(?P<slug>[-\w]+)/$', 'object_detail', link_info_dict, 'coltrane_link_detail'),
Run Code Online (Sandbox Code Playgroud)
例如,我如何保护此页面(没有视图添加login_Required装饰器)?
(r'^$', 'django.views.generic.simple.direct_to_template', {
'template': 'home.html'
}, ),
Run Code Online (Sandbox Code Playgroud)
cat*_*ran 26
要在urls.py中使用装饰器,您需要使用实际函数而不是它们的名称:
from django.contrib.auth.decorators import login_required
import django.views.generic.date_based as views
urlpatterns = patterns('',
(r'^$', login_required(views.archive_index), link_info_dict,
'coltrane_link_archive_index'),
...
Run Code Online (Sandbox Code Playgroud)
小智 7
至少在Django 1.11+中,你可以直接按照你想要的方式进行操作。例如:
# urls.py
from django.contrib.auth.decorators import login_required
urlpatterns = [
# Home path
path('', login_required(TemplateView.as_view(template_name='core/home.html')), name='home'),
# Another paths
# ...
]
Run Code Online (Sandbox Code Playgroud)
在这种情况下,每次尝试进入主页时,您都必须登录,否则您将进入登录屏幕,然后返回主页。
| 归档时间: |
|
| 查看次数: |
18550 次 |
| 最近记录: |