Django 将变量传递给函数
我有一个模块,它有一个名为“edit”的视图函数和一个名为“handle\u upload”的函数 我想将编辑函数中可用的两个变量值传递给handle\u upload函数,但我不知道如何传递,因为我没有在view函数中调用handle\u upload函数,所以无法将值作为参数传递 为清楚起见:Django 将变量传递给函数,django,python-2.7,Django,Python 2.7,我有一个模块,它有一个名为“edit”的视图函数和一个名为“handle\u upload”的函数 我想将编辑函数中可用的两个变量值传递给handle\u upload函数,但我不知道如何传递,因为我没有在view函数中调用handle\u upload函数,所以无法将值作为参数传递 为清楚起见: # my_module.py def edit(): dynamic variable #1 dynamic variable #2 render_to_response(s
# my_module.py
def edit():
dynamic variable #1
dynamic variable #2
render_to_response(some_site.html, locals(), context_instance = RequestContext(request))
def handle_upload():
# here is where I would want to get both variables.
你有两个选择
- 使用
关键字将两个变量声明为全局变量global
- 让
获取两个参数,并将这两个变量传入handle\u upload
如果您不是从
edit()
调用它,这意味着您需要将edit()
中的两个变量返回到调用站点,然后将它们传递到handle\u upload()
。您可以执行以下操作:
dynamic variable #1
dynamic variable #2
def edit():
global dynamic variable #1, dynamic variable #2
render_to_response(… )
def handle_upload():
global dynamic variable #1, dynamic variable #2
#…
但是,如果您是多线程的,请小心使用全局变量。如果你这么做,考虑一下锁;- 在我看来,您希望变量在两个单独的django服务器请求中可用-首先,您希望在用户转到
编辑
视图时设置变量,然后您希望在另一个调用handle\u upload
的视图中检索变量
根据要传递的实际数据,这里有两个选项
- 将其传递给模板,并将其作为隐藏字段添加到编辑表单中
render
而不是render\u to\u 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 }}' />
然后在调用handle\u upload
的视图中,只需执行以下操作并将变量传递给handle\u upload
:
dynamic_variable1 = request.session['name1']
dynamic_variable2 = request.session['name2']
dynamic_variable1 = request.session['name1']
dynamic_variable2 = request.session['name2']