簡體   English   中英

更新后重定向到同一視圖,在Django中刪除

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM