Django反向解析与分组命名

时间:2020-12-04 19:57:00

1.图书管理系统中使用分组或命名分组、URL的命名和反向解析;
2.删除功能三合一;

urls.py文件

from app_book import views
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^del_(publisher|author|book)/(\d+)/', views.delete), #分组或命名分组 
    url(r'^publisher_list/', views.publisher_list,name='publisher'),
    url(r'^add_publisher/', views.AddPuublisher.as_view()),
    # url(r'^del_publisher/', views.del_publisher),
    url(r'^edit_publisher/', views.edit_publisher),
    url(r'^index/', views.index),

删除

view.py文件

def delete(request,table,pk):
    #table='del_(publisher|author|book)',pk=(\d+)
    # href="/del_book/{{book.pk}}/"
    print(table,pk)
    # 反射,查找对应的对象
    table_class=getattr(models,table.capitalize())
    table_class.objects.filter(pk=pk).delete()  #删除

    return redirect(reverse(table))  #重定向到对应的展示页面,反向解析

    <td>
    <a class="btn btn-success btn-xs" href="/edit_author/?id={{author.pk}}">编辑</a> <a class="btn btn-danger btn-xs" href="/del_author/{{author.pk}}/" >删除作者</a> <a class="btn btn-primary btn-xs" href="/add_author/">新增作者</a>
    </td>
    删除作者利用的就是分组匹配