简单的Django程序让我困扰
我看了很多关于Django的教程,现在终于准备自己动手写代码了。不过,我的第一个非教程项目出现了错误,我已经纠结了好几天。我觉得这应该是个很简单的问题,因为我就是个新手。
当我使用这个视图时
def todo(request):
latest_list = Item.objects.all()
return HttpResponse(latest_list)
我得到了
conquer djangocan I do this?learn thislearn this
这些是填充数据库的四个项目。这样不太方便,因为它们是连在一起的,而且似乎没有传递给模板。
当我把views.py改成这样,试图和模板沟通
def todo(request):
latest_list = Item.objects.all()
return render_to_response,('index.html', {"latest_list", latest_list})
我得到了
'tuple' object has no attribute 'status_code'
是不是返回'self.task'的模型只限制了返回这个字段呢?我看过的其他教程似乎只返回一个值(而且返回'self'也让我遇到了类似的错误)。
也有可能是我没有传入
如果能给我一些帮助,让我走上正确的道路,我将非常感激。
Greg
我的model.py
from django.db import models
class Item(models.Model):
task = models.CharField(max_length=60)
taskNotes = models.CharField(max_length=600)
created = models.DateTimeField(auto_now_add=True)
done = models.BooleanField(default=False)
def __unicode__(self):
return self.task
我的views.py
from django.shortcuts import render_to_response, get_object_or_404
from django.template import RequestContext
from django.http import HttpResponse
from myToDo.todo.models import Item
def todo(request):
latest_list = Item.objects.all()
return HttpResponse(latest_list)
我的index.html(模板)
{% if latest_list %}
<ul>
{% for task in latest_list %}
<li>{{ Item.task }}</li>
{% endfor %}
</ul>
{% else %}
<p>Looks like you're all done</p>
{% endif %}
2 个回答
1
你在你的 return
语句上犯了个错误。
def todo(request):
latest_list = Item.objects.all()
return render_to_response('index.html', {"latest_list", latest_list})
注意函数名后面没有逗号。
2
return render_to_response,('index.html', {"latest_list", latest_list})
把render_to_response后面的那个逗号去掉就行了。原因是:这个逗号会让返回的值变成一个元组对象,但你需要从视图中返回一个HttpResponse对象。