我在Django 1.10中有一个仪表板应用程序。我想限制只有管理员用户访问此应用的视图,如果用户未登录,则将其重定向到管理员的登录页面。
这是我想应用某种逻辑的地方,这样只有管理员用户才能看到以/ dashboard /
开头的链接url(r' ^ dashboard /',include(' demo.dashboard.urls',namespace =' dashboard'))
答案 0 :(得分:5)
您必须使用@login_required
装饰器或@staff_member_required
装饰器来装饰各个视图。可能是后者,正如文档所述:
如果您正在为Django的管理员编写自定义视图(或者需要内置视图使用的相同授权检查),您可能会发现
django.contrib.admin.views.decorators.staff_member_required()
装饰器是{的有用替代品{1}}。
答案 1 :(得分:3)
你应该使用user_passes_test装饰者:
D:/Program Files/Ruby23-x64/lib/ruby/gems/2.3.0/gems/ruby-mp3info-0.8.10/lib/mp3
info.rb:244:in `initialize': No such file or directory @ rb_sysopen - C:/Users/MyUser/Desktop/MusicFolder/test.mp3 (Errno::ENOENT)
from D:/Program Files/Ruby23-x64/lib/ruby/gems/2.3.0/gems/ruby-mp3info-0
.8.10/lib/mp3info.rb:244:in `new'
from D:/Program Files/Ruby23-x64/lib/ruby/gems/2.3.0/gems/ruby-mp3info-0
.8.10/lib/mp3info.rb:244:in `reload'
from D:/Program Files/Ruby23-x64/lib/ruby/gems/2.3.0/gems/ruby-mp3info-0
.8.10/lib/mp3info.rb:230:in `initialize'
from D:/Program Files/Ruby23-x64/lib/ruby/gems/2.3.0/gems/ruby-mp3info-0
.8.10/lib/mp3info.rb:300:in `new'
from D:/Program Files/Ruby23-x64/lib/ruby/gems/2.3.0/gems/ruby-mp3info-0
.8.10/lib/mp3info.rb:300:in `open'
from ./main.rb:59:in `block in moveFilesIntoFolders'
from ./main.rb:58:in `each'
from ./main.rb:58:in `moveFilesIntoFolders'
from ./main.rb:124:in `<main>'
答案 2 :(得分:0)
我不确定Django 1.10,但是在Django 3.0中,您可以使用请求检查用户是否是超级用户aka admin。只是做:
def yourviewname(request):
if request.user.is_superuser:
#whatever_you_want_the_admin_to_see
else:
#forbidden
您还可以使用Django随附的装饰器,例如@staff_member_required
或@login_required