在Django中向请求添加变量
在Django中,我想给请求添加一个变量。也就是说,
def update_name(request):
names = Employee.objects.filter()
if names.count() > 0:
request.update({"names": name })
return render_to_response('chatlist/newchat.html',
context_instance=RequestContext(request, {'form': form,'msg': msg}))
这样添加变量到请求是正确的吗?如果不对,我该怎么做呢?
另外,我怎么在模板页面中获取到这个值呢?也就是说,
alert ("{{request.names['somename']}}");
2 个回答
2
有效的代码!!
假设有一个变量叫做 my_name。我将把它添加到获取和发送请求中。
my_name = "Nidhi"
在获取请求中添加变量
_mutable = request.GET._mutable
request.GET._mutable = True
request.GET['my_name'] = my_name
在发送请求中添加变量
_mutable = request.POST._mutable
request.POST._mutable = True
request.POST['my_name'] = my_name
现在在请求中添加了一个名为 my_name 的变量。 要获取它的值,可以使用下面的代码 -
request.GET.get("my_name") # get request variable value in GET request
request.GET.get("my_name") # get request variable value in POST request
输出:Nidhi
17
你给出的例子是错误的,因为:
- 没有叫做 request.update 的函数。
- 你在使用
name
这个变量,但你并没有给它赋值。
不过,在 Python 中,你可以很简单地给属性赋值,比如:
def update_name(request):
names = Employee.objects.filter()
if(names.count() > 0):
request.names = names
return render_to_response('chatlist/newchat.html', context_instance=RequestContext(request,{'form': form,'msg' : msg}))
而且你其实不需要把它赋值给 request,为什么不直接把它传给模板呢,比如:
def update_name(request):
names = Employee.objects.filter()
return render_to_response('chatlist/newchat.html', context_instance=RequestContext(request,{'form': form,'msg' : msg, 'names': names}))
在模板页面中,你可以通过 request.name 来访问这个值。不过,如果你只是为了在模板页面中使用一个变量,这样做并不是最好的方法,你可以把一个上下文字典传给模板页面。
补充说明:另外要注意的是,在模板中使用 request 之前,你需要以某种方式把它传过去,默认情况下是不可用的,具体可以查看这个链接:http://docs.djangoproject.com/en/dev/ref/templates/api/#subclassing-context-requestcontext