Django 将变量传递给函数

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

我有一个模块,它有一个名为“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(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
的视图中检索变量

根据要传递的实际数据,这里有两个选项

  • 将其传递给模板,并将其作为隐藏字段添加到编辑表单中
这可能是最简单的方法,但要小心敏感数据。如果您不希望恶意用户看到(甚至编辑)这些数据,请不要这样做。如果用户有恶意,他们可以并且将编辑隐藏的html字段。如果这些信息会危及服务器的安全,请不要依赖这些信息来判断其是否正确

首先,我建议您使用
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']