如何在主要的只读Django网站上最好地实现仅管理员页面和特定于管理员的视图?

| 我正在写一个Django网站。它几乎是一个只读网站,但管理员对网站执行一些更新操作。我希望管理员通过网站的前端进行编辑。 为此,对于管理员,某些URL的显示方式有所不同,除非请求来自已登录的管理员,否则某些URL应该返回404。 我不想让管理员用户的存在对匿名用户尤为明显,因此,如果该用户尚未以管理员身份登录,那么仅管理员页面的404即可。 目前我的设计是: 在服务器级别,将两个主机名用作同一单个Django站点的别名: admin.example.com www.example.com 在Django应用程序级别,对于每个仅管理员视图或对于管理员显示不同的视图,请检查请求的主机名是否为“ 0”。如果是: 如果请求来自登录的管理员,请返回具有管理员特定显示的页面 否则,返回404 具有管理员可以手动登录的URL。 这是愚蠢的吗?我是否错过了一种更简单/更好的方法?     
已邀请:
        在最简单的级别上,您可以在特定于管理员的视图上使用
user_passes_test
装饰器:
@user_passes_test(lambda u: u.is_superuser)
def only_admins_here(request):
    #do stuff
或者您可以简单地在视图中分支:
def some_view(request):
    if request.user.is_superuser:
        render_to_response(\'admin_template.html\')
    else:
        render_to_response(\'template.html\')
在此之上创建整个子域层将很快变得非常复杂,因为Django中并非所有类和函数都必须有权访问请求对象,因此,请求来自哪个域。     
        您可以删除第一点。 在Django应用程序级别,对于每个仅属于管理员的视图或对于管理员显示不同的视图,请检查请求是否来自登录的管理员。 如果请求来自登录的管理员,请返回具有管理员特定显示的页面 否则,返回404 具有管理员可以手动登录的URL。     

要回复问题请先登录注册