2015-12-26 60 views
0

新django,真的很喜歡簡單的工作完成。然而,當我得到一個不支持的405錯誤聲明方法時,出現通用DetailView的問題。以下是我的代碼。django通用DetailView

from django.shortcuts import render, get_object_or_404, get_list_or_404 
from django.views.generic import View, ListView, DetailView 
from store.managers import StoreManager 
from .models import Store 

# Create your views here. 
class StoreDetails(DetailView): 
    model = Store 
    template_name = 'store/details.html' 

class StoreIndex(ListView): 
    model = Store 
    template_name = 'store/index.html' 
    context_object_name = 'stores' 
# url 
urlpatterns = [ 
url(r'^view/([0-9]+)/$', StoreDetails.as_view(), name='details'), 
url(r'^index/$', StoreIndex.as_view(), name='index'), 
] 

雖然我的StoreIndex視圖完美地工作,但我的StoreDetails視圖出現錯誤。嘗試覆蓋get_context_data函數,但結果相同。

+0

請問您可以添加您的'urls'嗎? – RodrigoDela

+0

這是我的網址:urlpatterns = [url(r'^ view /([0-9] +)/ $',StoreDetails.as_view(),name ='details'),] –

+0

您是否嘗試添加'get功能到你的觀點? – RodrigoDela

回答

1

問題出在url模式。 DetailView需要主鍵來查找要顯示的正確對象,但r'^view/([0-9]+)/$'模式未指定匹配的數字應該用作主鍵。嘗試r'^view/(?P<pk>[0-9]+)/$'pk代表主鍵)。

另請參閱DetailView doocs(它提供了slug而不是pk)的示例。定製get_context_data不應該是pkslug

+0

按照建議修改了urlpatterns,但沒有得到想要的結果。將進一步研究這一點。感謝您的幫助。 –

+0

很高興看到確切的錯誤...你有沒有設置日誌記錄?你的'settings.py'中設置了'DEBUG = True'嗎?這可能有助於打印異常(無論是在瀏覽器中,還是在以「./manage.py runserver」運行的控制檯上)。 –

+0

我終於修復了這個問題,並意識到爲什麼我沒有收到任何StackTrace,我錯誤地留下了一箇舊版本的StoreDetails視圖類與更新後的副本位於同一個文件中,如果將舊版本的兩個類放在文件中,則將我的urlpattern設置爲使用較舊的視圖類,而不是正確的版本刪除舊的並添加url正則表達式參數,因爲你建議修正這些。謝謝 –