在django中添加一个变量来请求

时间:2011-03-07 11:10:10

标签: python django django-models django-templates django-views

在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']}}");

1 个答案:

答案 0 :(得分:9)

您提供的示例是错误的,因为

  1. 没有request.update函数
  2. 您正在使用未在任何地方指定的name变量吗?
  3. 无论如何,在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}))
    

    此外,您甚至不需要分配请求,为什么不能将它传递给模板,例如。

    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,但如果您这样做只是为了在模板页面中提供变量,那么这不是最好的方法,您可以将上下文字典传递给模板页面。

    编辑:另请注意,在模板中使用请求之前,您需要以某种方式传递它,默认情况下它不可用,请参阅http://docs.djangoproject.com/en/dev/ref/templates/api/#subclassing-context-requestcontext