我正在使用Django管理员对电影模型进行管理操作,如:
urls.py
url(r'^admin/', include(admin.site.urls)),
url(r'^admin/movies/', include('movies.adminurls')),
当请求来自**http://127.0.0.1:8000/admin/**
时,它会显示admin-login页面
有电影模型,我可以从那里管理。
由于电影模型有15个字段,因此从管理网站填写100部电影的数据将是一项繁琐的工作。
为此我创建了一个视图 add_movie ,其中我将通过json数据填充Movies表。 的 movies.adminurls
url(r'^add/', 'add_movie' , name="admin_add_movie"),
add_movie admin必须登录。请求就像
http://127.0.0.1:8000/admin/movies/add/
如果超级用户未登录,则应显示admin-login表单。当超级用户成功登录后,它应该重定向到 add_movie 视图
所以
是否可以显示该网址的admin-login?
答案 0 :(得分:2)
如果用户不是超级用户,则重定向到管理员登录表单:
def add_movie(request, *args, **kwargs):
if not (request.user.is_authenticated() and request.user.is_superuser):
return HttpResponseRedirect(settings.LOGIN_URL+'?next=/admin/movies/add/')
do_your_stuff(...)
如果是API,您可能需要提高PermissionDenied
。
答案 1 :(得分:0)
在面对你的问题后,我终于找到一个django装饰器,检查用户是管理员还是登录并显示你的视图,否则返回登录表单,登录后重定向到你的页面。
from django.contrib.admin.views.decorators import staff_member_required
@staff_member_required
def media_browser(request):
return HttpResponse("You logged in")