Django管理员登录特定网址

时间:2013-07-03 12:28:31

标签: django

我正在使用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?

2 个答案:

答案 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")