我想要添加最后5个项目。我真的不知道该怎么做。 我尝试了reverse()函数。限制我使用的查询[:5]
额外的问题:请求上下文是什么?我不懂djangodocs
模型:
class Topic(models.Model):
user = models.ForeignKey(User)
postit = models.TextField(max_length=300)
comment = models.TextField(max_length=300)
createdat = models.DateTimeField(default=timezone.now)
def timer(self):
return self.createdat
def who(self):
return self.user
def __str__(self): # __unicode__ on Python 2
return self.postit
查看:
def chat(request):
if request.method == 'POST':
form = StoryForm(request.POST)
if form.is_valid():
storyi = form.save(commit=False)
storyi.user = request.user
storyi.save()
return HttpResponseRedirect('/chat/')
else:
form=StoryForm()
try:
p = Topic.objects.all()[:5].reverse()
)
except ObjectDoesNotExist:
p= "don't try it again"
return render(request,'chat/chat.html',{'form': form, 'p':p})
答案 0 :(得分:0)
如果上次添加你的意思是列表中的最后一个,那么它应该是[-5:]。 例如:
In [22]: a =[1,2,3,4,5,6,7,8,9,10]
In [23]: a[:5]
Out[23]: [1, 2, 3, 4, 5]
In [26]: a[-5:]
Out[26]: [6, 7, 8, 9, 10]
您对RequestContext的兴趣是什么? RequestContext将返回特定值作为响应。 例如:
def my_view(request):
# View code here...
t = loader.get_template('myapp/index.html')
c = RequestContext(request, {'foo': 'bar'})
return HttpResponse(t.render(c))
在此处,您返回带有呈现值'index.html'
{'foo':''bar}
模板
更新: 在您的情况下,您可以像这样使用RequestContext:
return render(request,'chat / chat.html',{'form':form,'p':p})
...
template = loader.get_template('chat/chat.html')
c=RequestContext(request, {'form': form, 'p':p})
return HttpResponse(template.render(c))