Django 删除对象,从ListView转到DeleteView

Django 删除对象,从ListView转到DeleteView,django,django-views,Django,Django Views,我有一个ListView,我想从中使用DeleteView删除一些对象。到目前为止,我所拥有的: views.py class BlockListView(ListView): model= Classroom def get_context_data(self, **kwargs): context = super(BlockListView, self).get_context_data(**kwargs) classroom_blocks

我有一个ListView,我想从中使用DeleteView删除一些对象。到目前为止,我所拥有的:

views.py

class BlockListView(ListView):
    model= Classroom

    def get_context_data(self, **kwargs):
        context = super(BlockListView, self).get_context_data(**kwargs)
        classroom_blocks = Classroom.objects.all()
        context = {'classroom_blocks': classroom_blocks}
        return context

list_classroom_view = BlockListView.as_view()

class BlockDeleteView(DeleteView):
    model = Classroom
    success_url = reverse_lazy('classroom:blocklist')

delete_classroom_view = BlockDeleteView.as_view()
url.py

urlpatterns = [
    path(r'^$', views.index, name='index'),
    path('submitted', views.submitted, name='submitted'),
    path('classup/', create_classroom_view, name='classroom'),
    path('block/', views.block, name='block'),
    path('blocklist/', list_classroom_view, name='blocklist'),
    path(r'^(?P<pk>\d+)/blockDelete/$', delete_classroom_view, name='blockDelete'),
]
urlpatterns=[
路径(r'^$',views.index,name='index'),
路径('submitted',views.submitted,name='submitted'),
路径('classup/',创建教室视图,名称='classclass'),
路径('block/',views.block,name='block'),
路径('blocklist/',列表\教室\视图,名称='blocklist'),
路径(r'^(?P\d+)/blockDelete/$',delete\u教室视图,name='blockDelete'),
]
listview的模板:

{% for block in classroom_blocks %}
    <li>{{ block.get_course_block_display }}<a href ="{% url 'classroom:blockDelete' block.id %}" class="button" style="color:#999999">DELETE</a></li>
{% empty %}
    <li>No classes set up yet.</li>
{% endfor %}
{%用于教室中的块\u块%}
  • {{block.get\u course\u block\u display}
  • {%empty%}
  • 还没有课程设置
  • {%endfor%}
    确认删除的模板:

    {% block body %}
    <h1>Confirm Delete</h1>
    <form action="." method="post">{% csrf_token %}
        <p>Are you sure you want to delete "{{ object.course_block }}"?</p>
        <input type="submit" value="Confirm" />
    </form>
    {% endblock %}
    
    {%block body%}
    确认删除
    {%csrf_令牌%}
    是否确实要删除“{{object.course\u block}”

    {%endblock%}
    单击listview中的delete按钮后,生成的url为
    http://127.0.0.1:8000/classroom/%5E(%3FP89%5Cd+)/blockDelete/$
    这将指向确认删除页面。确认删除后,我得到一个404错误,请求URL为:http://127.0.0.1:8000/classroom/%5E(%3FP89%5Cd+)/blockDelete/您使用的是
    path()
    ,因此不应该使用正则表达式。将第一个和最后一个URL模式更改为:

    path('', views.index, name='index'),
    ...
    path('<int:pk>/blockDelete/', delete_classroom_view, name='blockDelete'),
    
    path(“”,views.index,name='index'),
    ...
    路径('/blockDelete/',delete_教室_视图,name='blockDelete'),
    
    现在,当您单击列表视图中的“删除”按钮时,您应该会被带到一个url,如
    /classic室/1/blockDelete/
    ,并且在提交表单时不应该得到404