2017-05-05 5 views
0

オブジェクトを削除していくつかの成功メッセージを渡すと、同じビューにリダイレクトできますか?Djangoで更新後も同じビューにリダイレクト

HTML:

<form action="{% url 'lamp-delete' lamp.id %}" method="post" style="display: inline;"> 
         {% csrf_token %} 
         <input type="hidden" name="product_id" value="{{ lamp.id }}" /> 
         <button type="submit" class="btn btn-outline-danger btn-sm"> 
          <i class="fa fa-trash" aria-hidden="true"></i> 
         </button> 
        </form> 

views.py

def index(request): 
    lamps = Lamp.objects.all() 
    return render(request, 'index.html', {'lamps': lamps}) 


def productlist(request, categ): 
    MEDIA_URL = settings.MEDIA_URL 
    lamps = Lamp.objects.filter(category=categ) 
    return render(request, 'productlist.html', {'lamps': lamps, 'MEDIA_URL': MEDIA_URL}) 


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

urls.py私は成功した削除項目の後に今django.views.generic.editとを使用してい

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'), 
] 

reverse_lazyを使って私は静的なページにリダイレクトすることができますが、私は既存のモデルをオーバーロードしようとしていて、 '製品リスト'を表示します。誰かが例を挙げることができたら、私はとても感謝しています。

答えて

0

Classy Class Based Viewsは、クラスベースのビューに適したリソースです。 https://ccbv.co.uk/projects/Django/1.10/django.views.generic.edit/DeleteView/を見ると、.get_success_url()メソッドがあることがわかります。そこには、self.requestにアクセスして何らかの変数を渡すこともできます。

しかし、簡単な成功のメッセージのために、私はあなたのテンプレートに続いて、Djangoのmessages framework

from django.contrib import messages 


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

    def delete(self, request, *args, **kwargs): 
     obj = self.get_object() 
     messages.success(request, '{} was deleted'.format(obj.name)) 
     return super(LampDelete, self).delete(request, *args, **kwargs) 

で代わりに見てみましょうは:

{% if messages %} 
<ul class="messages"> 
    {% for message in messages %} 
    <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li> 
    {% endfor %} 
</ul> 
{% endif %} 

(それはジャンゴから逐語的な例でしかありませんドキュメント)

関連する問題