zoukankan      html  css  js  c++  java
  • 反向解析的应用示例: 多个页面的删除函数合并为一个

    在开发后台管理系统的时候,通常会有多个展示页面,比如book展示页面, author的展示页面, 还有出版社的展示页面. 

    通常我们会对每一个页面写增删改查, 这样就会写3套重复的函数. 这些函数的逻辑都是一样的,只有部分的参数不一样.

    这里我们以删除为例,看看怎么把多个函数重复的函数用一个函数实现所有的功能.

    我们以book展示页和author的展示页为例子,通过一个delete函数,控制这两个页面的删除键

    第一步: 在url中配置路径, 把需要删除的页面对应的表名写进去,拼路径

    知识点: 正则表达式, 分组命名

        #把书籍,作者,出版社的删除 合并成一个删除路径
        re_path("(^book|publish|author)/delete/(d+)$",views.delete),
                  #表名小写

    第二步: 在view视图函数中定义删除函数

    知识点: 反向解析, 反射, 还有一点就是table直接用表名小写,通过 table.capitalize() 转换成对应的表名, 然后进行ORM操作

    # 通过反向解析 和 反射实现的
    #把书籍,作者,出版社的删除 合并成一个删除路径
    def delete(request,table,pk):
        #table ---> ‘book’ 'publish' 'author'   pk 要删除对象的ID
        table_dict={
        "book":models.Book,
        "publish":models.Publish,
        "author":models.Author
        }
        # table.capitalize() #大写 ‘book’ ——》  “Book”
        table_class=getattr(models,table.capitalize()) #getattr(models, 'Book') ——》 models.Book
        # ‘Book’ 'Publish'
        table_class.objects.filter(pk=pk).delete()
        return redirect(reverse(table))
        # 反向解析  ‘book’  ——》 ‘/books/’  跳转到book的展示页面的url
        #重定向到展示页面, 给展示页面的url 取别名=对应的表名小写

    第三步:在url 中写book 和 author 的别名

    path("books/",views.book_view,name="book"),
    
    path("author_view/",views.author_view,name="author"),

    第四步:分别在 book和author 的展示页面的html中写删除时走的路径

    <a href="/book/delete/{{ book.pk }}" class="btn btn-danger btn-sm">删除</a>
    <a href="/author/delete/{{ author.pk }}" class="btn btn-danger btn-sm">删除</a>

    这样就可以用一个函数,控制多个页面的删除按钮了.

  • 相关阅读:
    HDU 2899 Strange fuction
    HDU 2899 Strange fuction
    HDU 2199 Can you solve this equation?
    HDU 2199 Can you solve this equation?
    Java实现 LeetCode 700 二叉搜索树中的搜索(遍历树)
    Java实现 LeetCode 700 二叉搜索树中的搜索(遍历树)
    Java实现 LeetCode 700 二叉搜索树中的搜索(遍历树)
    Java实现 LeetCode 699 掉落的方块(线段树?)
    Java实现 LeetCode 699 掉落的方块(线段树?)
    Java实现 LeetCode 699 掉落的方块(线段树?)
  • 原文地址:https://www.cnblogs.com/kenD/p/10073047.html
Copyright © 2011-2022 走看看