简单的Django程序让我困扰

1 投票
2 回答
2711 浏览
提问于 2025-04-16 18:43

我看了很多关于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对象。

撰写回答