zoukankan      html  css  js  c++  java
  • 路由层--反射删除

    1、在app下urls.py中定义函数关系

       url(r'^delete/([a-zA-Z]+)/(d+)/$', views.delete),

    2、在项目下views.py中定义函数

    def delete(request, table_name, delete_id):
        print(table_name, delete_id)
        # 需要判断一下 表名和id值是否都是正经的数据
    
        # models.Book.objects.get(id=1).delete()
        # 从另外一个文件 根据字符串 反射具体的变量
        table_name = table_name.capitalize()
        if hasattr(models, table_name):
            # 如果能找到
            table_class = getattr(models, table_name)
            # 监测id是否存在
            try:
                table_class.objects.get(id=delete_id).delete()
            except Exception as e:
                print(str(e))
                print("id值不存在!")
            return HttpResponse("表名:{} id:{}".format(table_name, delete_id))
        else:
            return HttpResponse("表不存在!")

    3、新建数据库、添加author表,添加数据

     

     4、执行结果:

    (1)输入表名不存在的情况

     

     (2)表存在id不存在的情况

    (3)表和id都存在的情况

      

       

    """
    反射
    由字符串反向找 变量、函数、类
    """
    import sys
    
    class Person(object):
        def __init__(self, name):
            self.name = name
    
        def eat(self, food):
            print("{} 在吃 {}".format(self.name, food))
    
        def dream(self):
            print("{} 在做白日梦!".format(self.name))
    
    s = "person"
    
    # 字符串首字母大写
    s = s.capitalize()
    print(s, type(s))           # Person  <class 'str'>
    
    # 反射
    #sys.modules[__name__]:从系统的包里找到当前的这个文件。[__name__]指当前这个文件
    if hasattr(sys.modules[__name__], s):
        print("找到了")
        the_class = getattr(sys.modules[__name__], s)  # 获取属性 s 值,赋值给the_class,此时the_class就是一个Person类
    
        print(the_class)   # <class '__main__.Person'>
        #有了这个Person类之后我们就能拿它去用了
        obj = the_class(name="赵导")
        obj.eat("炒饼")    # 赵导 在吃 炒饼
    
    
    # 补充:
    # print(locals())          # 打印下当前所有可用的变量
    print(locals()["s"])       #Person
    print(locals().get("s"))   #Person
    
    def f():
        a = 1
        b = 2
        c = 3
        print(locals())
    
    f()  # {'c': 3, 'b': 2, 'a': 1}
    反射复习
  • 相关阅读:
    java1234初学maven
    解决maven创建web项目卡死在generator插件(转)
    maven下载速度慢的解决方法(转)
    git分支
    git基础
    oracle分析函数与over()(转)
    Oracle开窗函数 over()(转)
    Oracle计算时间函数(对时间的加减numtodsinterval、numtoyminterval) (转)
    selenium使用中遇到的问题
    selenium运行火狐报错FirefoxDriver : Unable to connect to host 127.0.0.1 on port 7055
  • 原文地址:https://www.cnblogs.com/zh-xiaoyuan/p/12772632.html
Copyright © 2011-2022 走看看