2014-10-28 93 views
0

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

回答

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) 
+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