在删除对象并传递一些成功消息之后,如何重定向到相同的视图?
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‘。如果有人能举个例子,我会非常感激的。
发布于 2017-05-05 13:26:43
对于基于类的视图,基于类的高级视图是一个很好的资源。查看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文档中的逐字示例)。
https://stackoverflow.com/questions/43805974
复制相似问题