代码
我正在使用日期时间。现在()作为Django视图中筛选器的一部分,如下所示:
def get_now():
return timezone.now()
class BulletinListView(ListView):
model = Announcement
template_name = 'newswire/home.html'
def get_context_data(self, **kwargs):
context = super(BulletinListView, self).get_context_data(**kwargs)
try:
published_announcements = Announcement.objects.filter(publish_start_date__lte=get_now(), publish_end_date__gte=get_now()).filter(hidden=False, under_review=False).extra(order_by=['-publish_start_date', 'publish_end_date'])
except Announcement.DoesNotExist:
published_announcements = None
if published_announcements is not None:
context['announcements'] = published_announcements
max_print_annoucements = int(config.MAX_PRINT_ANNOUCEMENTS)
context['announcements_print'] = published_announcements[
:max_print_annoucements]
context['more_annoucements_online_count'] = published_announcements.count() - max_print_annoucements
return context
编辑:成功更新并包含更多代码
它可以正常工作,并根据datetime.now()
提供的日期获得应该发布的、不隐藏或正在审阅的通知
问题
我使用datetime.datetime.now()
来过滤旧的公告,但是在生产环境中一天后,我意识到{
我阅读和尝试的东西
我看到了很多关于使用可调用的datetime.now
而不是datetime.now()
的问题,但仅限于在模型中设置默认值的上下文中。在
我定义了一个函数如下,认为它会强制datetime.now
再次求值,但它似乎不起作用。在
当我通过访问上下文的日期来查看我得到的内容时,我发现日期和时间不会超过部署服务器的时间。在
我见过很多使用日期时间。现在()在视图中,但没有一个遇到此问题。在
我怀疑我从未在开发中看到过这一点,因为我使用--reload选项运行development gunicorn服务器,并且在保存更改和服务器重新启动时,datetime.now()
会不断求值。在
This problem似乎很相似,但我不确定它与我的情况有何相似/不同
上下文:
我正在编写一个Django应用程序,我的开发和生产环境是使用docker实现的,应用程序运行在nginx代理之后
/usr/local/bin/gunicorn app.wsgi:application -w 2 -b :8000
你得决定你说的是哪一天?是不是:
每一个结果都会导致一个“错误”的结果,而实际上代码实际上没有什么错误。在
这是因为当涉及时区时,您的代码很幼稚。它基本上完全忽略了时区。在
这是一个复杂的主题,django有一个专门处理时区的complete section of the manual。我建议你读一两遍,因为时区会影响你的网站。在
最后,您可以稍微清理一下代码,如下所示:
相关问题 更多 >
编程相关推荐