在Django中将项目添加到request.Meta并将其打印在模板中

时间:2015-08-28 20:05:11

标签: python django django-templates

我想在request.META字典中添加像request.path这样的新项目。

def sysinfo(request):

    values = request.META.items()

    values['REQUEST_PATH'] = request.path

    return render_to_response('template.html',{'values':values})

...并在模板中输出:

{% for key,value in values %}
    [{{ key }}] => {{ value }} <br>
{% endfor %}

我收到了错误:&#39; dict_items&#39;对象不支持项目分配。当我评论值[&#39; REQUEST_PATH&#39;] = request.path 时,它运行正常。我也试过了:

values.update({'REQUEST_PATH',request.path})

...而且我得到了错误:&#39; dict_items&#39;对象没有属性&#39;更新&#39; 我也试图创建一个简单的字典:

other_values = {
        "REQUEST_PATH" : request.path,
        "HOSTNAME" : request.get_host(),
        "FULL PATH" : request.get_full_path(),
        "HTTPS" : request.is_secure(),
    }

...和我的输出:

[H] => T
[R] => E
[F] => U
[H] => O

但如果我将.items添加到我的值中:

{% for key,value in values.items %}
    [{{ key }}] => {{ value }} <br>
{% endfor %}

它工作正常。

[HTTPS] => False
[REQUEST_PATH] => /sysinfo/
[FULL PATH] => /sysinfo/
[HOSTNAME] => django.local 

那么,如何将新项目添加到现有的request.META字典?

P.S。我使用的是Python 3和Django 1.8.3

1 个答案:

答案 0 :(得分:1)

那是因为request.META.items()返回的类型为dict_items(生成器类型)。您需要将其转换为字典以分配另一个密钥。

values = dict(request.META.items())