3

我正在使用 Django admin 对 Movies 模型进行管理操作,例如:

网址.py

 url(r'^admin/', include(admin.site.urls)),
 url(r'^admin/movies/', include('movies.adminurls')),

当请求出现时,**http://127.0.0.1:8000/admin/**它显示了管理登录页面,我可以从那里管理电影模型。

由于 Movies 模型有 15 个字段,因此从管理站点填写 100 部电影的数据将是一项繁琐的任务。

为此,我创建了一个视图add_movie,我将在其中通过 json 数据填充 Movies 表。 电影.adminurls

 url(r'^add/', 'add_movie' , name="admin_add_movie"),

对于add_movie管理员必须登录。请求就像

http://127.0.0.1:8000/admin/movies/add/

如果超级用户没有登录,那么它应该显示管理员登录表单。当超级用户成功登录时,它应该重定向到add_movie视图

所以

是否可以显示该网址的管理员登录?

4

2 回答 2

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,您可能想要改为 raise PermissionDenied

于 2013-07-03T13:19:31.470 回答
0

面对您的问题后,我终于找到了一个 django 装饰器,它检查用户是管理员还是登录并显示您的视图,否则返回登录表单并在登录后重定向到您的页面。

from django.contrib.admin.views.decorators import staff_member_required
@staff_member_required
def media_browser(request):
    return HttpResponse("You logged in")
于 2014-02-12T22:53:42.060 回答