- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在运行 Django 1.4.3 和 Python 2.7,以及 PostgreSQL 数据库 (9.2.2)。我有一个带有“last_view”字段的模型,该字段是用户最后一次查看记录的时间戳。在我的首页上,我想显示上周内查看次数最多的十个项目,因此在我的 ListView 中,我尝试将其用于我的查询集:
startdate = timezone.now() - datetime.timedelta(days=7)
enddate = timezone.now()
urlpatterns = patterns('',
url(r'^$',
ListView.as_view(
queryset=Tag.objects.filter(last_view__range=([startdate, enddate])).order_by('-views')[:10],
context_object_name='most_viewed_list',
template_name='tags/index.html'),
name='index'),
这在我第一次加载页面时有效。如果我单击任何记录并“查看”它们,则 last_view 属性会在数据库中更新——但如果我随后重新加载页面,则该项目将从“最近查看”列表(由上述查询集形成)中消失。
我认为问题与此有关 post ,似乎 timezone.now() 的“结束日期”受限于我启动服务器进程的时间。所以当我在服务器运行后点击一个链接时,“当前时间”与“现在()”相比是 future 的并且超出了范围(这就是为什么我点击的记录在页面重新加载时消失了)。但是,如果我像上面提到的那样将事情更改为现在,我会在页面加载时遇到错误:
startdate = timezone.now - datetime.timedelta(days=7)
enddate = timezone.now
- 不支持的操作数类型:'function' 和 'datetime.timedelta'
所以我无法创建开始日期变量。我可以通过将查询集从 _range 更改为 _gte 来实现这一点,但如果 now() 的时间戳确实是服务器进程启动的时间而不是“当前时间”,那么这似乎会随着时间的推移而中断。 “
queryset=Tag.objects.filter(last_view__gte=(timezone.now() - datetime.timedelta(days=7)).order_by('-views')[:10]
Django Tutorial on testing确实显示了 now 在对日期进行查询时的使用,但是它们没有显示如何从 now 中减去天数或将其与 timedelta 或日期范围一起使用...
有人可以解释一下如何从实际的当前时间获取时间差吗,即使用 now 而不是 now()?我还想更好地了解使用 now() 与 now 的局限性。我找不到关于此的优秀文档,因为我可以找到的所有 timedelta() 示例都引用 timezone.now() 或 datetime.now(),它们有效(只是不是我想要的方式)。
谢谢!
最佳答案
子类 ListView
并覆盖 get_queryset
方法。通过计算 get_queryset
方法中的 startdate
和 enddate
, timezone.now()
将是时间已发出请求,而不是在最初加载 urls.py
时。
class TagListView(ListView):
def get_queryset(self):
startdate = timezone.now() - datetime.timedelta(days=7)
enddate = timezone.now()
return Tag.objects.filter(last_view__range=[startdate, enddate]).order_by('-views')[:10]
context_object_name='most_viewed_list'
template_name='tags/index.html'
urlpatterns = patterns('',
url(r'^$', TagListView.as_view(), name='index'),
)
关于python - Django 查询 timezone.now 和 __range 损坏的日期范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14076350/
我需要以 [+/-]hh:mm 格式保存手机的时区 我正在使用 TimeZone 类来处理这个问题,但我能得到的唯一格式如下: PST -05:00 GMT +02:00 我宁愿不对结果进行子串化,是
我正在尝试在 Node js 中使用 moment-timezone 来获取所有可用时区的列表,如下所示 - var moment = require('moment-timezone'); var
我正在使用以下代码将时区 (GMT-3) 转换为设备本地时区。 int hour=17,minute=0,day=12,month=6,year=2014; Calendar cal = new Gr
System.setProperty("user.timezone", "America/Chicago"); TimeZone.setDefault(TimeZone.getTimeZone("美国
我想从字符串初始化DateFormatter().timeZone,但是当我做类似的事情时 let dateFormatter = DateFormatter() dateFormatter.time
我通过存储日期组件字典在我的后端存储用户出生日期。它看起来像这样: { "day": 1, "month": 1, "year": 1970, "timeZone":
我一直在开发一个应用程序,它以下面给出的特定格式从服务器获取日期。 "2015-02-03 00:00:00" 我想使用 NSDateFormatter 以不同的 UI 格式显示它们但是当我更改时区时
我有什么 我有一个来自服务器的日期字符串,它的格式是 w3c 日期格式 2016-02-13T09:53:49.871Z 我的问题 当我将消息发布到服务器时,它显示的是 5 小时前而不是现在 我想要什
我正在将我的项目从 Django 1.8.2 升级到 1.9.7,我收到了这个警告: WARNINGS: my_app.my_model.date_available: (fields.W161) F
在下面的代码中: from datetime import datetime import pytz EDT = pytz.timezone('US/Eastern') d1 = datetime.n
我通过以下方式将服务器(Ubuntu 12.04)的时区更改为UTC: echo 'UTC' > /etc/timezone dpkg-reconfigure --frontend nonintera
我想获取洛杉矶的时区信息,现在10/10/2017是夏令时,但是我通过两种方式获取洛杉矶的时区得到了不同的结果。 public class TimeZoneDemo2 { public stati
我把它放在应用程序 Controller 中: before_filter :set_timezone def set_timezone Time.zone = current_user.time_
是否可以转换java.util.TimeZone字符串 sun.util.calendar.ZoneInfo[id=\"America/Los_Angeles\",offset=-28800000,d
当我写这段代码时: Calendar cal = Calendar.getInstance(); cal.setTimeZone(TimeZone.getTimeZone("EST"));
我正在使用 Java 8, 在我们的代码的前面,我们使用 sdf.setTimeZone(TimeZone.getTimeZone("PDT")); 转换为失败的美国太平洋地区(没有抛出任何错误,但转
我不断收到此警告:timezone of object (UTC) is different than current timezone ().我当前的时区是“EET”,如 Sys.timezone(
我正在我的网站上使用时刻时区转换器进行时区日期转换。默认情况下,我在 IST 中显示日期和时间。我有一个按钮可以转换用户时区中的给定时间。此按钮操作调用 moment js 并进行转换。到这里我没有问
我从服务响应中获得时区偏移量为“-5.00”,我需要在 UI 中将其格式化为 CST。我如何在 JavaScript 中转换它?我搜索了一下,不确定JavaScript中有没有直接的方法。 最佳答案
这个问题在这里已经有了答案: Converting string to datetime object (2 个答案) 关闭 6 年前。 我的主机有 UTC 时区,我正在尝试将 PDT 时间字符串转
我是一名优秀的程序员,十分优秀!