Django在模板中显示render_to_response
你好,提前谢谢你。
我知道这个问题很基础,我在各种论坛上搜索过,也看过文档好几遍,所以请多多包涵。
我有一个视图:
#views.py
from django.shortcuts import render_to_response
from django.shortcuts import render
from django.http import HttpResponse, HttpRequest, HttpResponseRedirect
from acme.acmetest.models import Player
from acme.acmetest.models import PickForm
def playerAdd(request, id=None):
form = PickForm(request.POST or None,
instance=id and Player.objects.get(id=id))
# Save new/edited pick
if request.method == 'POST' and form.is_valid():
form.save()
return HttpResponseRedirect('/draft/')
#return render_to_response('makepick.html', {'form':form})
return render(request, 'makepick.html', {'form':form})
def draftShow(request):
draft_list = ['1', 'hello', 'test', 'foo', 'bar']
#draft_list = Player.objects.all()
#return render_to_response('makepick.html', {'draft_list' :draft_list}, context_instance=RequestContext(request))
return render_to_response('makepick.html', {'draft_list' :draft_list})
我想把它渲染到一个 .html 模板页面上:
#makepick.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML lang="en">
<head>
<title>Pick</title>
</head>
<body>
<form method="POST" action="">
{% csrf_token %}
<table>{{ form }}</table>
<input type="submit" value="Draft Player"
</form><br /><br />
Your picks so far:<br />
{% for draft in draft_list %}
{{ draft.playernumber }}
{% endfor %}
</body>
</HTML>
其中 playernumber 是 models.py 中 "Player" 模型类的一个字段。
#urls.py
from django.conf.urls.defaults import patterns, include, url
from acme.acmetest import views
urlpatterns = patterns('',
('^$', 'acme.acmetest.views.playerAdd'),
)
谢谢你的帮助!
dp
2 个回答
1
确保 makepick.hmtl
文件在你应用的 templates
目录里,或者在你的 TEMPLATE_DIR 里面。
你可以在你的视图中检查一下,确认 Player.objects.all()
确实返回了一些内容。确保 playernumber 是 Player 对象的一个真实属性。
6
看起来你的模板显示得很好。所以你需要检查一下 draft_list
里面到底有没有东西,以及每个抓取到的对象的 playernumber
是什么。
在你项目的根目录下,运行:
python manage.py shell
现在你已经进入了命令行,接下来可以测试一下你的数据库里是否真的有 Player
对象,并查看每个对象的 playernumber
属性返回的是什么:
from acme.acmetest.models import Player
draft_list = Player.objects.all()
for draft in draft_list:
print draft.playernumber