我有一些代码:
models.py (模型帖子):
STATUS = (
(0,"Draft"),
(1,"Publish")
)
class Post(models.Model):
title = models.CharField(max_length=200, unique=True db_index=True )
slug = models.SlugField(max_length=200, unique=True)
updated_on = models.DateTimeField(auto_now= True)
publish = models.DateTimeField(auto_now_add=True)
status = models.IntegerField(choices=STATUS, default=0)
views.py
class PostList(generic.ListView):
queryset= Post.objects.filter(status=1).order_by('-publish')
template_name = 'index.html'
paginate_by = 6
urls.py
path('', views.PostList.as_view(), name='home'),
在管理控制台中创建文章后,单击“发布”,该文章未显示在主页上。但是,如果重新启动服务器(manage.py运行服务器),则该文章将显示在主页上。
问题: 如何使文章出现在页面重新加载且不需要服务器重启的情况下?
答案 0 :(得分:0)
我曾经有一个网站遇到过类似的问题。我发现缓存没有足够频繁地刷新(因为更新/更改的页面没有缓存在我的浏览器中,所以好像它不可见)。解决方案是(在服务器端)更新.htaccess文件。关键是“缓存控制”。就我而言,代码如下:
<filesMatch ".(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf|html)$">
Header set Cache-Control "max-age=1200, public, must-revalidate"
</filesMatch>
这里是更多信息: https://www.imperva.com/learn/performance/cache-control/
答案 1 :(得分:0)
事实证明,采用这种结构:
views.py
class PostList(generic.ListView): queryset= Post.objects.filter(status=1).order_by('-publish') template_name = 'index.html' paginate_by = 6
我们仅在服务器重启时从数据库中读取帖子。
我创建了这样的功能,它有助于解决问题
def postlist(request):
queryset= Post.objects.filter(status=1).order_by('-publish')
return render (request, index.html, {'queryset': queryset})