在我看来,您希望变量在对 django 服务器的两个单独请求中可用 - 首先您想在用户转到edit
视图时设置它们,然后您想在另一个调用handle_upload
.
这里有两个选项,具体取决于您要传递的实际数据。
这可能是最简单的方法,但要小心敏感数据。如果您不希望恶意用户看到(甚至编辑)这些数据,请不要这样做。如果他们有不良意图,用户可以并且将编辑隐藏的 html 字段。如果它可能危及服务器的安全,请不要依赖此信息是正确的。
首先,我建议您使用render
而不是render_to_response
,因为后者已经过时并且很快就会被弃用。render
确保您有一个RequestContext
对象,并要求第一个参数是实际request
对象:
render(request, 'some_site.html', locals())
然后在您的模板中,在表单中:
<input type='hidden' name='name1' value='{{ dynamic_variable_1 }}' />
<input type='hidden' name='name2' value='{{ dynamic_variable_2 }}' />
然后用于request.POST.get('name1')
获取dynamic_variable_1
等的值。
这样,数据将保留在服务器上,甚至仍然是 Python 对象,因此它可以处理各种对象(我认为,这不是 100% 确定的)。
首先,确保'django.contrib.sessions.middleware.SessionMiddleware'
在您MIDDLEWARE_CLASSES
的 settings.py 中。如果您使用 Django 的startapp
命令,则默认情况下是这样。
然后,在 中执行以下操作edit
:
request.session['name1'] = dynamic_variable1
request.session['name2'] = dynamic_variable2
然后在调用的视图中handle_upload
,只需执行以下操作并将变量传递给handle_upload
:
dynamic_variable1 = request.session['name1']
dynamic_variable2 = request.session['name2']