0

我正在尝试使用会话将一些数据从一页传递到另一页。这是我在 ajax.py 中编写的代码。

def save_cookie(request, query):
    request.session['query'] = query

但是当我调用这个 dajaxice 函数时,会发生错误。众所周知,当我们尝试在 html 页面中使用 dajaxice 时,错误消息总是“sth go wrong”。我尝试调试 save_cookie,但我创建的模拟请求对象没有会话属性。但是,如果我做 request.session="blah",它就起作用了。如果我直接使用 save_cookie(request,query)。它会弹出请求对象没有attr seesion的错误消息...

代码是正确的。我没有看到任何错误。有人知道原因吗?

4

2 回答 2

0

从来没有使用过 dajaxice / dajax 所以我真的帮不上忙。只是几点:

  • 您是否启用(并正确配置)会话支持?https://docs.djangoproject.com/en/1.3/topics/http/sessions/

  • 您可以使用日志记录模块(或简单的“打印”语句,但您不会拥有整个回溯)来跟踪异常,即:

    def save_cookie(request, query): try: request.session['query'] = query except Exception, e: print e raise

print 语句的输出现在应该出现在您启动开发服务器的 shell 中(假设您正在使用开发服务器......您正在使用开发服务器,不是吗?)

  • 仍在使用开发服务器,您可以使用 pdb 切换到交互式调试:

    def save_cookie(request, query): 导入 pdb;pdb.set_trace() request.session['query'] = 查询

然后尝试在浏览器中访问 url,切换回你的 shell,你就在一个 pdb 会话中,你可以在其中检查请求和(如果有的话)request.session 对象等。

注意:如果在 Apache 或任何其他 Web 服务器后面运行,请不要这样做 - 仅使用内置开发服务器。

  • “request.session='blah'” 将在“请求”对象上创建“会话”属性,如果它不存在(如果它已经存在,可能会替换真正的“会话”对象),所以它既不是一个有效的测试也没有什么明智的做法

我的2美分...

于 2012-05-25T12:14:58.213 回答
-1

免责声明:我对 dajaxice 一无所知。

以下将适用于模拟请求对象:

def save_cookie(request, query):
    if not hasattr(request, 'session'):
        request.session = dict()
    request.session['query'] = query
于 2012-05-25T12:08:12.927 回答