在Django中向请求添加变量

14 投票
2 回答
31208 浏览
提问于 2025-04-16 13:09

在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

你给出的例子是错误的,因为:

  1. 没有叫做 request.update 的函数。
  2. 你在使用 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

撰写回答