上下文: 我正在创建一个网站来存放我作为练习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"
答案 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