popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点 popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点 isinstance用于判断,对象是否是指定类或其派生类的实例 isinstance不精准 对象,判断是否是某个类型? 如果没有继承关系用isinstance, 如果有继承关系可以用type,

一、首先说一下自执行函数

1. 立即执行函数是什么?也就是匿名函数

立即执行函数就是

  1. 声明一个匿名函数
  2. 马上调用这个匿名函数

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

 isinstance用于判断,对象是否是指定类或其派生类的实例
 isinstance不精准
     对象,判断是否是某个类型?
         如果没有继承关系用isinstance,  
         如果有继承关系可以用type,

2、popup的举例

点击,弹出一个新的窗口。保存完事,页面不刷新数据就返回了。(点击admin的+,弹出的框就是用popup来做的)

具体操作步骤:

1、urls.py

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^index/', views.index),
    url(r'^pop/', views.pop),
]

2、views.py

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

 isinstance用于判断,对象是否是指定类或其派生类的实例
 isinstance不精准
     对象,判断是否是某个类型?
         如果没有继承关系用isinstance,  
         如果有继承关系可以用type,
def index(request):
    return render(request,"index.html")

def pop(request):
if request.method=="GET":
return render(request,"pop.html")
else:
user
= request.POST.get("user")
print(user)
return render(request,"pop_response.html",{"user":user})

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

 isinstance用于判断,对象是否是指定类或其派生类的实例
 isinstance不精准
     对象,判断是否是某个类型?
         如果没有继承关系用isinstance,  
         如果有继承关系可以用type,

3、templaates

index.html

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

 isinstance用于判断,对象是否是指定类或其派生类的实例
 isinstance不精准
     对象,判断是否是某个类型?
         如果没有继承关系用isinstance,  
         如果有继承关系可以用type,
<body>
<h1 id = "a">无所谓</h1>
<a href="#" onclick=popUp("http://www.baidu.com")>点我点我</a>
<script>
        function xxxpopupCallback(text) {
            document.getElementById('a').innerHTML = text;   //找到标签吧值替换成用户传进来的值
        }
        function popUp(url) {
            window.open( '/pop/', "n1","status=1, height:500, 600, toolbar=0, resizeable=0");
{#            window.open( url, "n1","status=1, height:500, 600, toolbar=0, resizeable=0");#}
        }


分析:
  index页面的第一个参数就是url,写什么路径就看到什么页面
  n1:弹出窗口的名字,定死了就弹出一个
  '/pop/','/pop/' 一个url弹出一个
  如果有两个+最多弹出两个框

</script>
</body>
popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

 isinstance用于判断,对象是否是指定类或其派生类的实例
 isinstance不精准
     对象,判断是否是某个类型?
         如果没有继承关系用isinstance,  
         如果有继承关系可以用type,

pop.html

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

 isinstance用于判断,对象是否是指定类或其派生类的实例
 isinstance不精准
     对象,判断是否是某个类型?
         如果没有继承关系用isinstance,  
         如果有继承关系可以用type,
<body>
<form action="" method="post">
    {% csrf_token %}
    <input type="text" name="user">
    <input type="submit" value="提交">
</form>
</body>
popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

 isinstance用于判断,对象是否是指定类或其派生类的实例
 isinstance不精准
     对象,判断是否是某个类型?
         如果没有继承关系用isinstance,  
         如果有继承关系可以用type,

pop_response.html

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

 isinstance用于判断,对象是否是指定类或其派生类的实例
 isinstance不精准
     对象,判断是否是某个类型?
         如果没有继承关系用isinstance,  
         如果有继承关系可以用type,
<h1>正在关闭</h1>
<script>
      (function () {
            // 可以调用popup原页面的一个函数,
            opener.xxxpopupCallback("{{ user }}");    xxxpopupCallback是自定义的函数
            window.close();  //传完数据之后自动关闭
        })()

</script>

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

 isinstance用于判断,对象是否是指定类或其派生类的实例
 isinstance不精准
     对象,判断是否是某个类型?
         如果没有继承关系用isinstance,  
         如果有继承关系可以用type,

运行结果截图

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

 isinstance用于判断,对象是否是指定类或其派生类的实例
 isinstance不精准
     对象,判断是否是某个类型?
         如果没有继承关系用isinstance,  
         如果有继承关系可以用type,

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

 isinstance用于判断,对象是否是指定类或其派生类的实例
 isinstance不精准
     对象,判断是否是某个类型?
         如果没有继承关系用isinstance,  
         如果有继承关系可以用type,

3、Form时时更新的两种方式

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

 isinstance用于判断,对象是否是指定类或其派生类的实例
 isinstance不精准
     对象,判断是否是某个类型?
         如果没有继承关系用isinstance,  
         如果有继承关系可以用type,

在ModelForm需要知道:

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

 isinstance用于判断,对象是否是指定类或其派生类的实例
 isinstance不精准
     对象,判断是否是某个类型?
         如果没有继承关系用isinstance,  
         如果有继承关系可以用type,
from app03 import models
from django.forms import ModelForm
class UserForm(ModelForm):
    class Meta:
        model = models.UserInfo
        fields = "__all__"
它的内部找到类之后,如果 类里的字段是FK,就会自动生成ModelChoiceField
                     如果是M2M ,就会自动生成ModelMutilChoiceField
popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

 isinstance用于判断,对象是否是指定类或其派生类的实例
 isinstance不精准
     对象,判断是否是某个类型?
         如果没有继承关系用isinstance,  
         如果有继承关系可以用type,

4、isintance和type

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

 isinstance用于判断,对象是否是指定类或其派生类的实例
 isinstance不精准
     对象,判断是否是某个类型?
         如果没有继承关系用isinstance,  
         如果有继承关系可以用type,
class Foo(object):
    pass

class Bar(Foo):
pass

obj = Bar()
# isinstance用于判断,对象是否是指定类的实例 (错误的)

isinstance用于判断,对象是否是指定类或其派生类的实例

isinstance不精准

print(isinstance(obj,Foo),id(obj)) #True 35558624
print(isinstance(obj,Bar),id(obj)) #True 35558624

print(type(obj)Foo) #False
print(type(obj)
Bar) #True

# 思考?

对象,判断是否是某个类型?

如果没有继承关系用isinstance,

如果有继承关系可以用type,

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

 isinstance用于判断,对象是否是指定类或其派生类的实例
 isinstance不精准
     对象,判断是否是某个类型?
         如果没有继承关系用isinstance,  
         如果有继承关系可以用type,

5、json的补充

import json
v = {"name":"海燕","age":22}
str_dic = json.dumps(v)
print(json.dumps(v),type(str_dic))  #{"name": "u6d77u71d5", "age": 22}<class 'str'>
print(json.dumps(v,ensure_ascii=False))  #{"name": "海燕", "age": 22}

6、反射举例

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

 isinstance用于判断,对象是否是指定类或其派生类的实例
 isinstance不精准
     对象,判断是否是某个类型?
         如果没有继承关系用isinstance,  
         如果有继承关系可以用type,
from 反射.settings import DB_PATH

def func():
# 导入文件
# 反射
# DB_PATH = "db.mysql.MySQLHelper"
module_path,cls_name = DB_PATH.rsplit('.',maxsplit=1)

</span><span style="color: #008000;">#</span><span style="color: #008000;"> 以字符串的形式导入模块</span>
<span style="color: #008000;">#</span><span style="color: #008000;"> from db import mysql</span>
<span style="color: #0000ff;">import</span><span style="color: #000000;"> importlib
module_obj </span>=<span style="color: #000000;"> importlib.import_module(module_path)

</span><span style="color: #008000;">#</span><span style="color: #008000;"> 去模块中导入类</span>
cls =<span style="color: #000000;"> getattr(module_obj,cls_name)

</span><span style="color: #008000;">#</span><span style="color: #008000;"> 类实例化</span>
obj =<span style="color: #000000;"> cls()
obj.fetchone()

if name == 'main':
func()
复制代码

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

 isinstance用于判断,对象是否是指定类或其派生类的实例
 isinstance不精准
     对象,判断是否是某个类型?
         如果没有继承关系用isinstance,  
         如果有继承关系可以用type,

6、知识点大致整理

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

 isinstance用于判断,对象是否是指定类或其派生类的实例
 isinstance不精准
     对象,判断是否是某个类型?
         如果没有继承关系用isinstance,  
         如果有继承关系可以用type,
- 单例模式
        - 文件导入
        - 类方法
    - 反射
        - 导入一个模块importlib,利用反射找到类
        - getattr
</span>-<span style="color: #000000;"> 面向对象
    </span>-<span style="color: #000000;"> 遇到封装数据时、;字典
                        自己写一个类,封装对象来做
    </span>- 遇到循环数据时:字典,元组,列表,可迭代对象(<span style="color: #800080;">__iter__</span><span style="color: #000000;">)
    </span>-<span style="color: #000000;"> 遇到后台对数据加工在页面中循环展示,可以通过yield来做(边循环边生产)。也可以先处理再循环
</span>-<span style="color: #000000;"> request.GET
    </span>- ?name=alex&amp;age=18&amp;age=19   <span style="color: #008000;">#</span><span style="color: #008000;">如果遇到这样的。</span>
    - QueryDict类型 = {<span style="color: #800000;">"</span><span style="color: #800000;">name</span><span style="color: #800000;">"</span>:[<span style="color: #800000;">"</span><span style="color: #800000;">alex</span><span style="color: #800000;">"</span>,],<span style="color: #800000;">"</span><span style="color: #800000;">age</span><span style="color: #800000;">"</span>:[18,19<span style="color: #000000;">]}
    </span>- 要想被修改 .mutable =<span style="color: #000000;"> True
      params[</span><span style="color: #800000;">"</span><span style="color: #800000;">hobby</span><span style="color: #800000;">"</span>] = <span style="color: #800000;">"</span><span style="color: #800000;">鲁宁</span><span style="color: #800000;">"</span><span style="color: #000000;">
      QueryDict类型 </span>= {<span style="color: #800000;">"</span><span style="color: #800000;">name</span><span style="color: #800000;">"</span>:[<span style="color: #800000;">"</span><span style="color: #800000;">alex</span><span style="color: #800000;">"</span>,],<span style="color: #800000;">"</span><span style="color: #800000;">age</span><span style="color: #800000;">"</span>:[18,19],hobby:[<span style="color: #800000;">"</span><span style="color: #800000;">鲁宁</span><span style="color: #800000;">"</span><span style="color: #000000;">],}
      
      params[</span><span style="color: #800000;">"</span><span style="color: #800000;">hobby</span><span style="color: #800000;">"</span>] = [<span style="color: #800000;">"</span><span style="color: #800000;">鲁宁</span><span style="color: #800000;">"</span>]  <span style="color: #008000;">#</span><span style="color: #008000;">传进去的是一个列表套列表</span>
      QueryDict类型 = {<span style="color: #800000;">"</span><span style="color: #800000;">name</span><span style="color: #800000;">"</span>:[<span style="color: #800000;">"</span><span style="color: #800000;">alex</span><span style="color: #800000;">"</span>,],<span style="color: #800000;">"</span><span style="color: #800000;">age</span><span style="color: #800000;">"</span>:[18,19],hobby:[[<span style="color: #800000;">"</span><span style="color: #800000;">鲁宁</span><span style="color: #800000;">"</span><span style="color: #000000;">]],}

    </span>- params.setlist(<span style="color: #800000;">"</span><span style="color: #800000;">hobby</span><span style="color: #800000;">"</span>,[<span style="color: #800000;">"</span><span style="color: #800000;">鲁宁</span><span style="color: #800000;">"</span>])  <span style="color: #008000;">#</span><span style="color: #008000;">直接把本身的元素传进去</span>
      QueryDict类型 = {<span style="color: #800000;">"</span><span style="color: #800000;">name</span><span style="color: #800000;">"</span>:[<span style="color: #800000;">"</span><span style="color: #800000;">alex</span><span style="color: #800000;">"</span>,],<span style="color: #800000;">"</span><span style="color: #800000;">age</span><span style="color: #800000;">"</span>:[18,19],hobby:[<span style="color: #800000;">"</span><span style="color: #800000;">鲁宁</span><span style="color: #800000;">"</span><span style="color: #000000;">],}

    
</span>-<span style="color: #000000;"> 类
    </span>-<span style="color: #000000;"> 组件
        </span>-<span style="color: #000000;"> StarkSite,单利模式,用于保存Model类和处理这个类增删改查的配置类的对象
        </span>-<span style="color: #000000;"> StarkConfig:处理增删改查的基类
        </span>-<span style="color: #000000;"> ChangeList:将列表页面的功能封装到此类中
        </span>- FilterRow:创建的可迭代对象(<span style="color: #800080;">__iter__</span><span style="color: #000000;">),一个对象保存了组合搜索中的一行数据
        </span>-<span style="color: #000000;"> FilterOption:封装组合搜索的配置项(数据库字段,是否多选,是否choice,条件)
    </span>-<span style="color: #000000;"> 使用
        </span>-  <span style="color: #0000ff;">class</span><span style="color: #000000;"> UserInfo(models.MOdel):....
        
        在stark.py
            </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> UserMOdelForm(MOdelForm):
                </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> Meta:
                    model </span>=<span style="color: #000000;"> UserInfo
                    fields </span>= <span style="color: #800000;">"</span><span style="color: #800000;">__all__</span><span style="color: #800000;">"</span>
            
        
            <span style="color: #0000ff;">class</span><span style="color: #000000;"> UserinfoConfig(v1.StarkConfig)
                list_display
                .....
                model_form_class </span>=<span style="color: #000000;"> UserMOdelForm
            v1.site.register(UserInfo,UserinfoConfig)
            </span></pre>
popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

 isinstance用于判断,对象是否是指定类或其派生类的实例
 isinstance不精准
     对象,判断是否是某个类型?
         如果没有继承关系用isinstance,  
         如果有继承关系可以用type,

一、首先说一下自执行函数

1. 立即执行函数是什么?也就是匿名函数

立即执行函数就是

  1. 声明一个匿名函数
  2. 马上调用这个匿名函数

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

 isinstance用于判断,对象是否是指定类或其派生类的实例
 isinstance不精准
     对象,判断是否是某个类型?
         如果没有继承关系用isinstance,  
         如果有继承关系可以用type,

2、popup的举例

点击,弹出一个新的窗口。保存完事,页面不刷新数据就返回了。(点击admin的+,弹出的框就是用popup来做的)

具体操作步骤:

1、urls.py

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^index/', views.index),
    url(r'^pop/', views.pop),
]

2、views.py

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

 isinstance用于判断,对象是否是指定类或其派生类的实例
 isinstance不精准
     对象,判断是否是某个类型?
         如果没有继承关系用isinstance,  
         如果有继承关系可以用type,
def index(request):
    return render(request,"index.html")

def pop(request):
if request.method=="GET":
return render(request,"pop.html")
else:
user
= request.POST.get("user")
print(user)
return render(request,"pop_response.html",{"user":user})

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

 isinstance用于判断,对象是否是指定类或其派生类的实例
 isinstance不精准
     对象,判断是否是某个类型?
         如果没有继承关系用isinstance,  
         如果有继承关系可以用type,

3、templaates

index.html

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

 isinstance用于判断,对象是否是指定类或其派生类的实例
 isinstance不精准
     对象,判断是否是某个类型?
         如果没有继承关系用isinstance,  
         如果有继承关系可以用type,
<body>
<h1 id = "a">无所谓</h1>
<a href="#" onclick=popUp("http://www.baidu.com")>点我点我</a>
<script>
        function xxxpopupCallback(text) {
            document.getElementById('a').innerHTML = text;   //找到标签吧值替换成用户传进来的值
        }
        function popUp(url) {
            window.open( '/pop/', "n1","status=1, height:500, 600, toolbar=0, resizeable=0");
{#            window.open( url, "n1","status=1, height:500, 600, toolbar=0, resizeable=0");#}
        }


分析:
  index页面的第一个参数就是url,写什么路径就看到什么页面
  n1:弹出窗口的名字,定死了就弹出一个
  '/pop/','/pop/' 一个url弹出一个
  如果有两个+最多弹出两个框

</script>
</body>
popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

 isinstance用于判断,对象是否是指定类或其派生类的实例
 isinstance不精准
     对象,判断是否是某个类型?
         如果没有继承关系用isinstance,  
         如果有继承关系可以用type,

pop.html

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

 isinstance用于判断,对象是否是指定类或其派生类的实例
 isinstance不精准
     对象,判断是否是某个类型?
         如果没有继承关系用isinstance,  
         如果有继承关系可以用type,
<body>
<form action="" method="post">
    {% csrf_token %}
    <input type="text" name="user">
    <input type="submit" value="提交">
</form>
</body>
popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

 isinstance用于判断,对象是否是指定类或其派生类的实例
 isinstance不精准
     对象,判断是否是某个类型?
         如果没有继承关系用isinstance,  
         如果有继承关系可以用type,

pop_response.html

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

 isinstance用于判断,对象是否是指定类或其派生类的实例
 isinstance不精准
     对象,判断是否是某个类型?
         如果没有继承关系用isinstance,  
         如果有继承关系可以用type,
<h1>正在关闭</h1>
<script>
      (function () {
            // 可以调用popup原页面的一个函数,
            opener.xxxpopupCallback("{{ user }}");    xxxpopupCallback是自定义的函数
            window.close();  //传完数据之后自动关闭
        })()

</script>

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

 isinstance用于判断,对象是否是指定类或其派生类的实例
 isinstance不精准
     对象,判断是否是某个类型?
         如果没有继承关系用isinstance,  
         如果有继承关系可以用type,

运行结果截图

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

 isinstance用于判断,对象是否是指定类或其派生类的实例
 isinstance不精准
     对象,判断是否是某个类型?
         如果没有继承关系用isinstance,  
         如果有继承关系可以用type,

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

 isinstance用于判断,对象是否是指定类或其派生类的实例
 isinstance不精准
     对象,判断是否是某个类型?
         如果没有继承关系用isinstance,  
         如果有继承关系可以用type,

3、Form时时更新的两种方式

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

 isinstance用于判断,对象是否是指定类或其派生类的实例
 isinstance不精准
     对象,判断是否是某个类型?
         如果没有继承关系用isinstance,  
         如果有继承关系可以用type,

在ModelForm需要知道:

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

 isinstance用于判断,对象是否是指定类或其派生类的实例
 isinstance不精准
     对象,判断是否是某个类型?
         如果没有继承关系用isinstance,  
         如果有继承关系可以用type,
from app03 import models
from django.forms import ModelForm
class UserForm(ModelForm):
    class Meta:
        model = models.UserInfo
        fields = "__all__"
它的内部找到类之后,如果 类里的字段是FK,就会自动生成ModelChoiceField
                     如果是M2M ,就会自动生成ModelMutilChoiceField
popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

 isinstance用于判断,对象是否是指定类或其派生类的实例
 isinstance不精准
     对象,判断是否是某个类型?
         如果没有继承关系用isinstance,  
         如果有继承关系可以用type,

4、isintance和type

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

 isinstance用于判断,对象是否是指定类或其派生类的实例
 isinstance不精准
     对象,判断是否是某个类型?
         如果没有继承关系用isinstance,  
         如果有继承关系可以用type,
class Foo(object):
    pass

class Bar(Foo):
pass

obj = Bar()
# isinstance用于判断,对象是否是指定类的实例 (错误的)

isinstance用于判断,对象是否是指定类或其派生类的实例

isinstance不精准

print(isinstance(obj,Foo),id(obj)) #True 35558624
print(isinstance(obj,Bar),id(obj)) #True 35558624

print(type(obj)Foo) #False
print(type(obj)
Bar) #True

# 思考?

对象,判断是否是某个类型?

如果没有继承关系用isinstance,

如果有继承关系可以用type,

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

 isinstance用于判断,对象是否是指定类或其派生类的实例
 isinstance不精准
     对象,判断是否是某个类型?
         如果没有继承关系用isinstance,  
         如果有继承关系可以用type,

5、json的补充

import json
v = {"name":"海燕","age":22}
str_dic = json.dumps(v)
print(json.dumps(v),type(str_dic))  #{"name": "u6d77u71d5", "age": 22}<class 'str'>
print(json.dumps(v,ensure_ascii=False))  #{"name": "海燕", "age": 22}

6、反射举例

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

 isinstance用于判断,对象是否是指定类或其派生类的实例
 isinstance不精准
     对象,判断是否是某个类型?
         如果没有继承关系用isinstance,  
         如果有继承关系可以用type,
from 反射.settings import DB_PATH

def func():
# 导入文件
# 反射
# DB_PATH = "db.mysql.MySQLHelper"
module_path,cls_name = DB_PATH.rsplit('.',maxsplit=1)

</span><span style="color: #008000;">#</span><span style="color: #008000;"> 以字符串的形式导入模块</span>
<span style="color: #008000;">#</span><span style="color: #008000;"> from db import mysql</span>
<span style="color: #0000ff;">import</span><span style="color: #000000;"> importlib
module_obj </span>=<span style="color: #000000;"> importlib.import_module(module_path)

</span><span style="color: #008000;">#</span><span style="color: #008000;"> 去模块中导入类</span>
cls =<span style="color: #000000;"> getattr(module_obj,cls_name)

</span><span style="color: #008000;">#</span><span style="color: #008000;"> 类实例化</span>
obj =<span style="color: #000000;"> cls()
obj.fetchone()

if name == 'main':
func()
复制代码

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

 isinstance用于判断,对象是否是指定类或其派生类的实例
 isinstance不精准
     对象,判断是否是某个类型?
         如果没有继承关系用isinstance,  
         如果有继承关系可以用type,

6、知识点大致整理

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

 isinstance用于判断,对象是否是指定类或其派生类的实例
 isinstance不精准
     对象,判断是否是某个类型?
         如果没有继承关系用isinstance,  
         如果有继承关系可以用type,
- 单例模式
        - 文件导入
        - 类方法
    - 反射
        - 导入一个模块importlib,利用反射找到类
        - getattr
</span>-<span style="color: #000000;"> 面向对象
    </span>-<span style="color: #000000;"> 遇到封装数据时、;字典
                        自己写一个类,封装对象来做
    </span>- 遇到循环数据时:字典,元组,列表,可迭代对象(<span style="color: #800080;">__iter__</span><span style="color: #000000;">)
    </span>-<span style="color: #000000;"> 遇到后台对数据加工在页面中循环展示,可以通过yield来做(边循环边生产)。也可以先处理再循环
</span>-<span style="color: #000000;"> request.GET
    </span>- ?name=alex&amp;age=18&amp;age=19   <span style="color: #008000;">#</span><span style="color: #008000;">如果遇到这样的。</span>
    - QueryDict类型 = {<span style="color: #800000;">"</span><span style="color: #800000;">name</span><span style="color: #800000;">"</span>:[<span style="color: #800000;">"</span><span style="color: #800000;">alex</span><span style="color: #800000;">"</span>,],<span style="color: #800000;">"</span><span style="color: #800000;">age</span><span style="color: #800000;">"</span>:[18,19<span style="color: #000000;">]}
    </span>- 要想被修改 .mutable =<span style="color: #000000;"> True
      params[</span><span style="color: #800000;">"</span><span style="color: #800000;">hobby</span><span style="color: #800000;">"</span>] = <span style="color: #800000;">"</span><span style="color: #800000;">鲁宁</span><span style="color: #800000;">"</span><span style="color: #000000;">
      QueryDict类型 </span>= {<span style="color: #800000;">"</span><span style="color: #800000;">name</span><span style="color: #800000;">"</span>:[<span style="color: #800000;">"</span><span style="color: #800000;">alex</span><span style="color: #800000;">"</span>,],<span style="color: #800000;">"</span><span style="color: #800000;">age</span><span style="color: #800000;">"</span>:[18,19],hobby:[<span style="color: #800000;">"</span><span style="color: #800000;">鲁宁</span><span style="color: #800000;">"</span><span style="color: #000000;">],}
      
      params[</span><span style="color: #800000;">"</span><span style="color: #800000;">hobby</span><span style="color: #800000;">"</span>] = [<span style="color: #800000;">"</span><span style="color: #800000;">鲁宁</span><span style="color: #800000;">"</span>]  <span style="color: #008000;">#</span><span style="color: #008000;">传进去的是一个列表套列表</span>
      QueryDict类型 = {<span style="color: #800000;">"</span><span style="color: #800000;">name</span><span style="color: #800000;">"</span>:[<span style="color: #800000;">"</span><span style="color: #800000;">alex</span><span style="color: #800000;">"</span>,],<span style="color: #800000;">"</span><span style="color: #800000;">age</span><span style="color: #800000;">"</span>:[18,19],hobby:[[<span style="color: #800000;">"</span><span style="color: #800000;">鲁宁</span><span style="color: #800000;">"</span><span style="color: #000000;">]],}

    </span>- params.setlist(<span style="color: #800000;">"</span><span style="color: #800000;">hobby</span><span style="color: #800000;">"</span>,[<span style="color: #800000;">"</span><span style="color: #800000;">鲁宁</span><span style="color: #800000;">"</span>])  <span style="color: #008000;">#</span><span style="color: #008000;">直接把本身的元素传进去</span>
      QueryDict类型 = {<span style="color: #800000;">"</span><span style="color: #800000;">name</span><span style="color: #800000;">"</span>:[<span style="color: #800000;">"</span><span style="color: #800000;">alex</span><span style="color: #800000;">"</span>,],<span style="color: #800000;">"</span><span style="color: #800000;">age</span><span style="color: #800000;">"</span>:[18,19],hobby:[<span style="color: #800000;">"</span><span style="color: #800000;">鲁宁</span><span style="color: #800000;">"</span><span style="color: #000000;">],}

    
</span>-<span style="color: #000000;"> 类
    </span>-<span style="color: #000000;"> 组件
        </span>-<span style="color: #000000;"> StarkSite,单利模式,用于保存Model类和处理这个类增删改查的配置类的对象
        </span>-<span style="color: #000000;"> StarkConfig:处理增删改查的基类
        </span>-<span style="color: #000000;"> ChangeList:将列表页面的功能封装到此类中
        </span>- FilterRow:创建的可迭代对象(<span style="color: #800080;">__iter__</span><span style="color: #000000;">),一个对象保存了组合搜索中的一行数据
        </span>-<span style="color: #000000;"> FilterOption:封装组合搜索的配置项(数据库字段,是否多选,是否choice,条件)
    </span>-<span style="color: #000000;"> 使用
        </span>-  <span style="color: #0000ff;">class</span><span style="color: #000000;"> UserInfo(models.MOdel):....
        
        在stark.py
            </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> UserMOdelForm(MOdelForm):
                </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> Meta:
                    model </span>=<span style="color: #000000;"> UserInfo
                    fields </span>= <span style="color: #800000;">"</span><span style="color: #800000;">__all__</span><span style="color: #800000;">"</span>
            
        
            <span style="color: #0000ff;">class</span><span style="color: #000000;"> UserinfoConfig(v1.StarkConfig)
                list_display
                .....
                model_form_class </span>=<span style="color: #000000;"> UserMOdelForm
            v1.site.register(UserInfo,UserinfoConfig)
            </span></pre>
popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

 isinstance用于判断,对象是否是指定类或其派生类的实例
 isinstance不精准
     对象,判断是否是某个类型?
         如果没有继承关系用isinstance,  
         如果有继承关系可以用type,