我正在尝试完成页面顶部附近的简单练习: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>
答案 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