2011-05-18 42 views
0

我正在编写一个简单的django应用程序来管理网站上的页面。 这些页面是通过管理网站创建的,可以使用“查看现场”功能进行预览。 每个页面都有一个“发布”布尔值,用于确定显示页面的视图是否应在网站上显示它。 当然,一旦我改变视图以尊重'已发布',管理页面的'查看现场'链接也不会显示该页面。 但我希望能够在编辑过程中预览未发布的页面。在非管理视图中使用django admin的站点身份验证

因此,我决定更改视图以检查是否存在与请求关联的已认证用户。 例如:

if request.user.is_authenticated() and request.user.is_staff: 
    manager=Pages.objects #returns all pages 
else: 
    manager=Pages.live  #only returns published pages 

然后适当的经理传递从URL捕获

然而PAGE_ID到get_object_or_404一起,在视图中,用户永远是匿名,即使是谁认证与用户管理网站点击“查看网站”链接。 因此,'活'管理器总是被使用,并且我有和以前一样的结果:404当从管理站点访问未发布的页面时。 这是它应该表现的方式吗? 我真的认为会话信息将从管理网站的会话中继承。

我会很感激这里的任何方向,因为我可能不太清楚这应该如何工作。 我不需要该网站的登录机制,所以我希望能够搭载管理员的登录信息,以便能够查看管理员中未发布的网页。

谢谢

回答

0

问题没有了。 现在,如果我登录管理员,我可以查看未发布的页面,否则我会收到404错误。

不幸的是,我不确定它为什么开始工作。 我跑了一些软件包更新(django和Firefox都不在其中),不得不重启我的(archlinux)机器。 当我重新启动django开发服务器并再次测试该功能时,一切都很顺利。 我怀疑Firefox是罪魁祸首,但这只是一个猜测。

无论如何,感谢任何给这个问题一些想法的人。 我现在可以停止拉我的头发了。