2017-05-05 1 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에 액세스 할 수 있습니다.

그러나, 간단한 성공 메시지, 나는에 대신 좀 걸릴 것 장고의 템플릿에서 다음

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) 

messages framework :

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

을 (즉, 장고에서 그대로 그냥 예입니다 docs.)

관련 문제