2017-05-06 83 views
1

我想要做的是想重定向到用戶在刪除項目時所在的同一頁面。使用「django.views.generic.edit」(DeleteView)刪除後,我可以將所有需要的信息收集到模型中,並獲取我需要的特定類別。問題是我如何創建這個請求url去?Django重定向到模板傳遞模型

這樣我得到http://127.0.0.1:8000/productlist/floor/

<a class="dropdown-item" href="{% url 'productlist' 'floor' %}" > 

views.py

class LampDelete(DeleteView): 
model = Lamp 
#success_url = reverse_lazy('index') 

def get_success_url(self): 
    categ = self.object.category 
    lamps = Lamp.objects.filter(category=categ) 
    return redirect('productlist', {'lamps': lamps}) 

urls.py

urlpatterns =[ 
url(r'^$', views.index, name='index'), 
url(r'^productlist/([a-z0-9]+)/$', views.productlist, name='productlist'), 
url(r'^accounts/', include('allauth.urls')), 
url(r'productlist/(?P<pk>[0-9]+)/delete/$', views.LampDelete.as_view(), name='lamp-delete'),] 

所以我應該用什麼方法,以及如何重定向到我的模板與選定的類別模型。如果有人能提供一個例子會非常感謝。

回答

2

其實你仍然有.get_success_url()對象,

source code

class DeletionMixin(object): 
    def delete(self, request, *args, **kwargs): 
     """ 
     Calls the delete() method on the fetched object and then 
     redirects to the success URL. 
     """ 
     self.object = self.get_object() 
     success_url = self.get_success_url() 
     self.object.delete() 
     return HttpResponseRedirect(success_url) 

正如你所看到的,首先它計算success_url,然後將其刪除的對象。

你做了什麼錯:

  1. 相反的,你叫redirectstr對象觸發重定向和跳過刪除的整個過程中提供的網址。
  2. redirect查看與URL參數提供queryset,而不是str,因爲它一直在等待([a-z0-9]+)

我相信,在productlist鑑於你期望某種類別的名稱,通過你的產品被過濾

那麼你可以做什麼

  1. 返回有效str OBJ ect in .get_success_url()

例如,

class LampDelete(DeleteView): 
    model = Lamp 

    def get_success_url(self): 
     category = self.object.category 
     return reverse('productlist', args=[category]) 
+0

類是已經從燈模型場,但是當我只有通過返回的反向(「產品列表」,{「類別」:類別})我得到的類型錯誤:unhashable類型:「字典」。即使類別是 serj

+0

@serj是的,這是因爲您需要傳遞'view.productlist'中使用的'str'對象。我認爲它可能是與'Category'對象 –

+0

Category'對象什麼的'名字,這是我views.productlist 高清產品列表(請求,CATEG): MEDIA_URL = settings.MEDIA_URL 燈= Lamp.objects.filter(返回render(request,'productlist.html',{'lamps':lamps,'MEDIA_URL':MEDIA_URL}) 這個對象應該通過嗎? – serj