发送带有请求的对象

时间:2011-05-20 07:14:04

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

在下面的代码中,我正在尝试使用请求发送一个对象,这是否正确,如果是这样,如何在模板中解码

 def index(request):
      cat = Category.objects.filter(title="ASD")
      dict = {'cat' : cat}
       request.update('dict' : dict) 
          #or
       request.dict=dict;

在模板中我们可以将代码编写为

     {% for obj in request.dict%}
          obj.title
     {% endfor %}

EDIT:           如果我正在调用类似

的功能
      def post_list(request, page=0, paginate_by=20, **kwargs):
        logging.debug("post_list")
        page_size = getattr(settings,'BLOG_PAGESIZE', paginate_by)
        return list_detail.object_list(
        request,
        queryset=Post.objects.published(),
        paginate_by=page_size,
        page=page,
        **kwargs
      )

2 个答案:

答案 0 :(得分:2)

你可以这样做,但你为什么要这样做? Django有一个简单,定义明确且记录完备的方法,可以通过上下文将数据传递到模板中。为什么要设法解决这个问题呢?

评论后编辑否。再次,Django通过extra_context参数再次is well-documented将一个非常好的方法传递给一般视图。

答案 1 :(得分:0)

您没有显示用于渲染视图的实际功能(render()render_to_response()等。)

假设您正在使用render_to_response()

render_to_response(template_name[, dictionary][, context_instance][, mimetype])
  

使用给定的模式呈现给定模板   上下文字典并返回一个   HttpResponse对象与渲染   文本。

因此,如果您将{"foo": your_object}作为字典传入,则可以直接在模板中使用{{ foo }}


如果您使用的是object_list通用视图,则应使用extra_context

  

extra_context:值的字典   添加到模板上下文。通过   默认情况下,这是一个空字典。   如果字典中的值是   可调用,通用视图将调用   它就在呈现模板之前。