我正在编写一个简单的django应用程序来管理网站上的页面。 页面是通过管理站点创建的,可以使用“站点视图”功能进行预览。 每个页面都有一个“已发布”布尔值,用于确定显示页面的视图是否应在现场显示。 当然,一旦我将视图更改为尊重“已发布”,管理页面的“网站视图”链接也不会显示该页面。 但我希望能够在编辑过程中预览未发布的页面。
所以我决定更改视图以检查是否有与该请求关联的经过身份验证的用户。 例如:
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
但是,在视图中,即使通过管理站点进行身份验证的用户单击“站点上的视图”链接,用户也始终是匿名的。 因此,'live'管理器总是被使用,并且我有与以前相同的结果:404从管理站点访问未发布的页面时。 这是它应该表现的方式吗? 我真的认为会话信息将从管理站点的会话继承。
我会很感激这里的任何方向,因为我可能不太清楚它应该如何运作。 我不需要网站的登录机制,所以我希望捎带管理员的登录,以便能够在管理员中查看未发布的页面。
由于
答案 0 :(得分:0)
问题已经消失。 现在,如果我登录管理员,我可以查看未发布的页面,否则我会收到404错误。
不幸的是,我不确定它为什么开始工作。 我运行了一些软件包更新(django和Firefox都不在其中)并且不得不重启我的(archlinux)机器。 当我重新启动django develpment服务器并再次测试该功能时,一切都很顺利。 我怀疑Firefox是罪魁祸首,但这只是猜测。
无论如何,感谢任何提出这个问题的人。 我现在可以停止拔头发了。