Noobie需要帮助调试简单的python / django代码。为什么这个观点不起作用?

时间:2012-01-13 22:32:59

标签: python django django-views

我正在尝试完成页面顶部附近的简单练习:http://www.djangobook.com/en/2.0/chapter07/。当用户访问mysite.com/meta/时,我想在显示HTTPRequest元数据的页面上显示一个简单的html表。

在我的urls.py文件中,我有:

from django.conf.urls.defaults import patterns, include, url
from mysite.views import display_request_meta_data

urlpatterns = patterns('',
    url(r'^meta/$', display_request_meta_data),
)

在我的views.py文件中,我有:

from django.template.loader import get_template
from django.template import Context
from django.http import HttpResponse
import logging

logger = logging.getLogger(__name__)

def display_request_meta_data(request):
    meta_data = request.META.items()
    meta_data.sort()
    for x in meta_data
        # print x  # wasn't working, so I tried using a logger instead.
        logger.error(x)
    t = get_template('http_meta_data_table.html')
    html = t.render(Context(*meta_data_dict))
    return HttpResponse(html)

在我的模板目录中,我有一个名为http_meta_data_table.html的文件,其中包含以下内容:

<html>
<head>
    <title>HTTP Meta Data</title>
</head>
<body>
    <table>
        {% for key, value in meta_data_dict %}
            <tr><td>{{key}}</td><td>{{value}}</td></tr>
        {% endfor %}
    </table>
</body>
</html>

2 个答案:

答案 0 :(得分:1)

怎么样:

def display_request_meta_data(request):
    meta_data = request.META.items()
    meta_data.sort()
    for x in meta_data: # you were missing a semi column
        # print x  # wasn't working, so I tried using a logger instead.
        logger.error(x)
    t = get_template('http_meta_data_table.html')
    html = t.render(Context({'meta_data': meta_data})) # the dict doesn't exitst
    return HttpResponse(html)

在html中,dict也不存在:

<html>
<head>
    <title>HTTP Meta Data</title>
</head>
<body>
    <table>
        {% for key, value in meta_data %}
            <tr><td>{{key}}</td><td>{{value}}</td></tr>
        {% endfor %}
    </table>
</body>

</html>

这与django无关,这些都是非常基本的错误。使用框架学习编程是一个坏主意IMO。你应该先学习基础知识,否则你的学习曲线看起来就像是一个困难的墙。

Django是一个易于学习的框架,但它假设您了解Python。

答案 1 :(得分:0)

meta_data_dict未定义。您可能要将meta_data传递给t.render