我正在django中写一个博客应用程序。作为其中的一部分,我有一个视图函数,从数据库中获取对应于单个博客文章的对象。我用来查询数据库的字段是发布日期(pub_date),其类型为DateTime(Python)。我有一个MySQL数据库,该字段的列类型为datetime
。但是,虽然我传递了正确的日期属性,但我无法从数据库中获取对象。我收到404错误。以下是我的查看功能:
def entry_detail(request,year,month,day,slug):
import datetime,time
date_stamp = time.strptime(year+month+day,"%Y%b%d")
pub_date = datetime.date(*date_stamp[:3])
entry = get_object_or_404(Entry,pub_date__year=pub_date.year,pub_date__month=pub_date.month,pub_date__day=pub_date.day,slug=slug)
return render_to_response('coltrane/entry_detail.html',{'entry':entry})
以下是我要提取的各个帖子的网址:
http://127.0.0.1:8000/weblog/2014/oct/28/third-post/
这就是数据库中第三篇文章的pub_date列值如下所示:
2014-10-28 13:26:39
以下是网址格式:
url(r'^weblog/(?P<year>\d{4})/(?P<month>\w{3})/(?P<day>\d{2})/(?P<slug>[-\w]+)/$','coltrane.views.entry_detail'),
答案 0 :(得分:1)
你在做一些奇怪的事情:你转换为time
,然后将其转换为datetime.date
,然后将年,月和日提取为整数并将其传递给查询。您可以绕过几乎整个过程:您唯一需要的是转换月份,其他参数可以直接传递:
month_no = datetime.datetime.strptime(month, '%b').month
entry = get_object_or_404(Entry, pub_date__year=year, pub_date__month=month_no, pub_date__day=day, slug=slug)