Django视图不适用于项目

时间:2018-01-17 01:50:41

标签: python django

上下文: 我正在创建一个网站来存放我作为练习Django项目的一些webcomics。我正在调整Django的教程来创建网站(https://docs.djangoproject.com/en/2.0/intro/tutorial03/大约在页面的下半部分"写下实际做某事的视图")。我很难让部分观点按预期工作。

期望: 我去http://127.0.0.1:8000/futureFleet/时看到的内容:latest_comic

我想看到的内容:我的2个漫画的字典。

问题: 我想我在这一行做错了什么

context = {' latest_comic':latest_comic}。我正在修改教程中的这一行。我该怎么办?我错过了什么?

Models.py

class Comic(models.Model):
    #title
    comic_title_text = models.CharField(max_length=200)
    #date
    comic_pub_date = models.DateTimeField('comic date published')
    #image
    comic_location = models.CharField(max_length=200)
    #explanation
    comic_explanation_text = models.CharField(max_length=400, blank=True)

    def __str__(self):
        return self.comic_title_text

    def was_published_recently(self):
        return self.comic_pub_date >= timezone.now() - datetime.timedelta(days=1)

views.py

def index(request):
    latest_comic = Comic.objects.order_by('-comic_pub_date')[:2]
    context = {'latest_comic': latest_comic}
    return HttpResponse(context)
    # return render(request, 'futureFleet/index.html', context) This sends to the template but doesn’t work at the moment

数据库

"Welcome Aboard" "2018-01-15 21:02:54" "/home/user/Desktop/django/djangoFutureFleet/mysite/futureFleet/static/futureFleet/images/1.JPG" "this is the first comic"

"Space Vaccine" "2018-01-15 23:02:22" "/home/user/Desktop/django/djangoFutureFleet/mysite/futureFleet/static/futureFleet/images/2.JPG" "This is comic 2"

3 个答案:

答案 0 :(得分:0)

问题在于:

Comic.objects.order_by('-comic_pub_date')[:2]

您正在向Django询问按发布日期排序的所有Comic个对象。然后用[:2]取前两个。以下是此语法的一个简单示例:

>>> a = [0,1,2,3,4]
>>> print(a[:2])
[0, 1]

您可能正在寻找的是:

Comic.objects.order_by('-comic_pub_date').first()

这只会返回第一个结果。

答案 1 :(得分:0)

您是否已将视图与urls.py相关联?要访问该视图,您需要将其连接到URL。在您的urls.py文件中,添加 path('/',<your app name>.views.index), 或者如果你使用旧的django: url(r'', <your app name>.views.index),

之后,试试这个:

latest_comic = Comic.objects.all().order_by('-comic_pub_date')[:2]

答案 2 :(得分:0)

你可以尝试:

def index(request):
    latest_comic = Comic.objects.order_by('-comic_pub_date')[:2]
    dictionary = {'comic_1':latest_comic[0], 'comic_2':latest_comic[1]}
    return HttpResponse(dictionary)

注意:latest_comic[0] 将返回模型的第一个字段值,在您的情况下:Welcome Aboard

如果您想访问其他字段,则需要执行以下操作:

latest_comic[0].field_name