[英]Redirect to the same view after update,delete in 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
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'),
]
我正在使用django.views.generic.edit,現在在使用reverse_lazy成功刪除項目之后,我可以重定向到靜態頁面,但是我試圖使現有模型過載並向該視圖“ productlist”傳遞帶有字符串的變量。 如果有人能提供一個例子,我將非常感激。
基於類的經典視圖是基於類的視圖的良好資源。 查看https://ccbv.co.uk/projects/Django/1.10/django.views.generic.edit/DeleteView/ ,您會看到有一個.get_success_url()
方法,在那里您也可以訪問對self.request
能夠傳遞某種變量。
但是 ,對於簡單的成功消息,我將看一下Django的消息框架
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 %}
(這只是Django文檔中的逐字記錄示例。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.