【问题标题】:How to access the session object in Django Syndication framework code如何在 Django Syndication 框架代码中访问会话对象
【发布时间】:2010-11-01 14:49:30
【问题描述】:

快速提问。在我的联合提要框架代码中,

http://docs.djangoproject.com/en/dev/ref/contrib/syndication/

访问会话的最佳方式是什么?我没有 访问请求,我无法使用

from django.contrib.sessions.backends.db import SessionStore 

因为我不知道会话 ID,但我需要访问一些 会话中的变量。

即我有:

from django.contrib.syndication.feeds import Feed
class LatestPhotos(Feed):
    ...

在LatestPhotos 类中,我需要访问会话中的某些内容以帮助控制逻辑流程。我找不到任何关于最佳方法的文档。

谢谢

谢谢!

【问题讨论】:

  • 联合供稿没有用户或会话。你想做什么?

标签: python django


【解决方案1】:

尝试访问 LatestPhoto 类中的会话数据似乎是一个设计缺陷。我假设如果您的联合提要依赖于会话变量,那么您要联合的项目 (LatestPhotos) 应该使用该变量构建?

您能否在构造LatestPhotos 对象之前做出逻辑流决策,或者至少将会话ID 传递给LatestPhotos init 例程?

【讨论】:

  • +1:联合是无会话的。这是向在 /feeds/ 上执行 GET 的任何人分发的站点更改公告。既没有会话也没有用户。
  • 问题是,您必须在 urls.py URL 模式定义中提供 url => Feed 类映射的字典。所以我在任何时候(或至少是请求)都无法访问会话,所以我可以知道请求是针对哪个“站点”的。这是在启动时定义的,而不是在请求期间定义的。考虑到这些限制如何做到这一点?谢谢!
  • 看起来有人想要类似的功能:code.djangoproject.com/ticket/2912
【解决方案2】:

想通了 - drrr,如此简单。联合框架 Feed 类有一个名为 request 的成员……这么简单,我从来没想过 :)

[此评论适用于 django 1.1 及更早的联合框架]

【讨论】:

    猜你喜欢
    • 2013-08-18
    • 1970-01-01
    • 2020-04-18
    • 2014-09-03
    • 2018-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-15
    相关资源
    最近更新 更多