无法在django中检索数据

问题描述:

我正在用django写一个博客应用程序。作为其中的一部分,我有一个视图函数,它从数据库中提取一个对应于单个博客文章的对象。我用来查询数据库的字段是DateTime(Python)类型的发布日期(pub_date)。我有一个MySQL数据库,这个字段的列的类型是datetime。但是我无法从数据库中获取对象,虽然我传递了正确的日期属性。我得到一个404和error.The以下是我的看法功能:无法在django中检索数据

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模式:

url(r'^weblog/(?P<year>\d{4})/(?P<month>\w{3})/(?P<day>\d{2})/(?P<slug>[-\w]+)/$','coltrane.views.entry_detail'), 

您在这里做了一些奇怪的事情:您转换为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) 
+0

感谢@Daniel,但我仍然得到404错误:没有输入匹配给定查询。你认为这需要对数据库中列的类型做些什么吗? – 2014-10-28 14:12:42

+0

你能显示这个视图的URL模式吗?而愚蠢的问题,但你确定数据库中的slu is是否正确? – 2014-10-28 15:29:10

+0

是的,我也检查了slu and,它与我在查询中传递的slu matches相匹配。另外,我更新了我的问题以包含网址格式。 – 2014-10-28 16:20:28