Простая программа Django, доставляющая мне неприятности - PullRequest
1 голос
/ 01 июня 2011

Я прошел довольно много уроков по django, и, наконец, я готов к самостоятельному выходу.Тем не менее, моя первая неучебная программа выдает ошибку, и я несколько дней бьюсь головой.Я ожидаю, что это будет очень нубская проблема, потому что, ну, я.

Когда я использую это представление

 def todo(request): 
        latest_list = Item.objects.all()
        return HttpResponse(latest_list) 

, я получаю

conquer djangocan I do this?learn thislearn this

, которые представляют собой четыре элемента, которые заполняют базу данных.Не очень удобно, так как они объединены, и они не передаются шаблону.

Когда я меняю свой view.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' вызывает у меня очень похожую ошибку.

Возможно также, что я не передаю

Любая помощьэто подтолкнет меня к правильному пути, и мы будем очень признательны.

Грег

My 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

My 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 ]

2 голосов
/ 01 июня 2011
return render_to_response,('index.html', {"latest_list", latest_list})

Удалите запятую affer render_to_response, и все будет в порядке. Причина: запятая делает возвращаемое значение объектом кортежа, но необходимо возвращать объект HttpResponse из представления.

1 голос
/ 01 июня 2011

Ты обманываешь на своем return.

def todo(request):
  latest_list = Item.objects.all()
  return render_to_response('index.html', {"latest_list", latest_list})

Обратите внимание на отсутствие запятой после имени функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...