0

我有一个表单,它将路径作为输入,分析该目录中的文件和子文件夹,将信息存储在数据库中,然后向用户显示一些关于刚刚解析的文件的统计信息。这是目前使用 Django 视图和 render_to_response 完成的。

根据我所阅读的所有内容,在处理 POST 时使用 HttpResponseRedirect 以外的任何内容都是不正确的,因为如果刷新页面,使用 POST 数据生成的页面将重新提交表单。

我的问题是,由于分析提供的路径上的文件,最终会显示大量摘要数据。如何使用 httpResponseRedirect 显示该数据?django.core.urlresolvers.reverse由于数据量的原因,使用它作为 GET 参数发送似乎是不可行的。

4

3 回答 3

2

您可以将数据放在 request.session

http://www.djangobook.com/en/beta/chapter12/#cn36

http://docs.djangoproject.com/en/1.2/topics/http/sessions/

于 2010-11-16T23:23:16.977 回答
0

我假设您的 POST 句柄从提交的表单数据中创建了一些数据库对象,这是正确的吗?如果是这样,那么你可以做这样的事情(:

    my_obj = MyModel.objects.create(**form.cleaned_data) # This is the part yuo already have, most probably expressed with some other code, but still..
    return HttpResponseRedirect('/url/to/redirect/?id=%d' % obj.id)

重定向喜欢实际上应该使用reverse()函数,我认为您应该有一个用于编辑 MyModel 对象的 URL。然后你可以这样做:

    return HttpResponseRedirect(reverse('edit-mymodel', (), {'id': obj.id}))

相关 URL 如下所示:

url('^edit/mymodel/(?P<id>\d+)$', 'apps.myapp', name='edit-mymodel')
于 2010-11-17T12:33:02.913 回答
0

一个粗略但简单的解决方案是将数据写入 json 文本文件,然后在重定向页面中读取(这也可以避免在刷新页面时重建数据)

于 2010-11-17T13:08:12.980 回答