0

如何將DetailView通過url中的'slug'?如何通過url中的'slug'傳遞DetailView?

首先,讓我們來看看我的代碼。

urls.py

from django.conf.urls import patterns, include, url 

urlpatterns = patterns('', 
    url(r'^customer/(?P<slug>[^/]+)/$', customerDetailView.as_view()), 
) 

views.py

from django.views.generic import DetailView 

class customerDetailView(DetailView): 
    context_object_name = 'customerDetail' 
    template_name = "customerDetail.html" 
    allow_empty = True 
    model = Customer 
    slug_field = 'name' # 'name' is field of Customer Model 

現在,我的代碼是像上面。

我想改變下面的代碼。

urls.py

from django.conf.urls import patterns, include, url 

urlpatterns = patterns('', 
    url(r'^customer/(?P<slug>[^/]+)/$', customer), 
) 

views.py

from django.views.generic import DetailView 

class customerDetailView(DetailView): 
    context_object_name = 'customerDetail' 
    template_name = "customerDetail.html" 
    allow_empty = True 
    model = Customer 
    slug_field = 'name' # 'name' is field of Customer Model 

def customer(request, slug): 
    if request.method == "DELETE": 
     pass # some code blah blah 
    elif request.method == "POST" 
     pass 
    elif request.method == "GET": 
     return customerDetailView.as_view(slug=slug)(request) # But this line is not working... just causing error TypeError, customerDetailView() received an invalid keyword 'slug' 

如你所知,的DetailView需要 '塞' 或 'PK' ......所以我必須提供 '塞' 到在的DetailView ...但我不知道我該如何實現「塞」 ......

我等待箴言報的你的答案前......

謝謝你!

回答

4

正確的方法應該是

return customerDetailView.as_view()(request, slug=slug) 
+0

謝謝!!!!!!!!!!!玩的很開心! – chobo 2013-04-11 02:48:02