2013-07-03 51 views
3

我使用Django管理为管理操作上的电影模式,如:Django管理登录特定的URL

urls.py

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

当请求到来就像**http://127.0.0.1:8000/admin/**它表明管理登录页面 有电影模型,我可以从那里管理。

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

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

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

add_movie管理员必须登录。请求是像

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

如果超级用户不那么它应该显示管理员登录形式记录下来。当超级用户在随后成功登录它应该重定向到add_movie视图

所以

是它可以显示管理员登录该网址是什么?

+0

见https://docs.djangoproject.com/en/1.5/topics/auth/default/#django.contrib.auth.views.login –

回答

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代替。

+0

一点点改变它的工作 返回HttpResponseRedirect('/管理员/') – navyad

0

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

from django.contrib.admin.views.decorators import staff_member_required 
@staff_member_required 
def media_browser(request): 
    return HttpResponse("You logged in")