无法在django中检索数据

时间:2014-10-28 13:43:00

标签: django

我正在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'),

1 个答案:

答案 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)