popup的简单应用举例

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

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

当即执行函数就是mysql

  1. 声明一个匿名函数
  2. 立刻调用这个匿名函数

二、popup的举例sql

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

具体操做步骤:django

一、urls.pyjson

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

二、views.pyapp

复制代码
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})
复制代码

三、templaates函数

index.htmlpost

复制代码
<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, width:600, toolbar=0, resizeable=0"); {# window.open( url, "n1","status=1, height:500, width:600, toolbar=0, resizeable=0");#} } 


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

</script>
</body>
复制代码

pop.html

复制代码
<body>
<form action="" method="post"> {% csrf_token %} <input type="text" name="user"> <input type="submit" value="提交"> </form> </body>
复制代码

pop_response.html

复制代码
<h1>正在关闭</h1>
<script> (function () { // 能够调用popup原页面的一个函数, opener.xxxpopupCallback("{{ user }}"); xxxpopupCallback是自定义的函数 window.close(); //传完数据以后自动关闭  })() </script>
复制代码

运行结果截图

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

在ModelForm须要知道:

复制代码
from app03 import models from django.forms import ModelForm class UserForm(ModelForm): class Meta: model = models.UserInfo fields = "__all__" 它的内部找到类以后,若是 类里的字段是FK,就会自动生成ModelChoiceField 若是是M2M ,就会自动生成ModelMutilChoiceField
复制代码

四、isintance和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, 
复制代码

五、json的补充

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

六、反射举例

复制代码
from 反射.settings import DB_PATH def func(): # 导入文件 # 反射 # DB_PATH = "db.mysql.MySQLHelper" module_path,cls_name = DB_PATH.rsplit('.',maxsplit=1) # 以字符串的形式导入模块 # from db import mysql import importlib module_obj = importlib.import_module(module_path) # 去模块中导入类 cls = getattr(module_obj,cls_name) # 类实例化 obj = cls() obj.fetchone() if __name__ == '__main__': func() 复制代码
复制代码

 

六、知识点大体整理

复制代码
- 单例模式 - 文件导入 - 类方法 - 反射 - 导入一个模块importlib,利用反射找到类 - getattr - 面向对象 - 遇到封装数据时、;字典 本身写一个类,封装对象来作 - 遇到循环数据时:字典,元组,列表,可迭代对象(__iter__) - 遇到后台对数据加工在页面中循环展现,能够经过yield来作(边循环边生产)。也能够先处理再循环 - request.GET - ?name=alex&age=18&age=19 #若是遇到这样的。 - QueryDict类型 = {"name":["alex",],"age":[18,19]} - 要想被修改 .mutable = True params["hobby"] = "鲁宁" QueryDict类型 = {"name":["alex",],"age":[18,19],hobby:["鲁宁"],} params["hobby"] = ["鲁宁"] #传进去的是一个列表套列表 QueryDict类型 = {"name":["alex",],"age":[18,19],hobby:[["鲁宁"]],} - params.setlist("hobby",["鲁宁"]) #直接把自己的元素传进去 QueryDict类型 = {"name":["alex",],"age":[18,19],hobby:["鲁宁"],} - 类 - 组件 - StarkSite,单利模式,用于保存Model类和处理这个类增删改查的配置类的对象 - StarkConfig:处理增删改查的基类 - ChangeList:将列表页面的功能封装到此类中 - FilterRow:建立的可迭代对象(__iter__),一个对象保存了组合搜索中的一行数据 - FilterOption:封装组合搜索的配置项(数据库字段,是否多选,是否choice,条件) - 使用 - class UserInfo(models.MOdel):.... 在stark.py class UserMOdelForm(MOdelForm): class Meta: model = UserInfo fields = "__all__" class UserinfoConfig(v1.StarkConfig) list_display ..... model_form_class = UserMOdelForm v1.site.register(UserInfo,UserinfoConfig) 
复制代码
相关文章
相关标签/搜索