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

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

立即执行函数就是

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

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

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})

3、templaates

index.html

<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弹出一个
  如果有两个+最多弹出两个框

</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>

运行结果截图

3、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

4、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,

5、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}

6、反射举例

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

6、知识点大致整理

- 单例模式
- 文件导入
- 类方法
- 反射
- 导入一个模块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)

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

  1. 最简单的jsp+servlet的增删改查代码

    package ceet.ac.cn.dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.s ...

  2. 四种简单的sql语句(增删改查语句)

    四种简单的sql语句(增删改查语句) 一.插入语句 insert into [table] ([column],[column],[column]) values(?,?,?) 二.删除语句 dele ...

  3. Redis简单的数据操作(增删改查)

    #Redis简单的数据操作(增删改查): 字符串类型 string 1. 存储: set key value 127.0.0.1:6379> set username zhangsan OK 2 ...

  4. day84-仿照admin实现一个自定义的增删改查组件

    一.admin的使用 app01的admin.py文件: class BookConfig(admin.ModelAdmin): list_display=[] list_display_links= ...

  5. 基于django做增删改查组件,分页器组件

    增删改查组件 一.Djangoadmin的启发 二.基于Djangoadmin实现数据的增删改查 分页器组件 分页器组件的介绍以及源码解读 补充:源码下载,

  6. c#winform简单实现Mysql数据库的增删改查的语句

    通过简单的SQL语句实现对数据库的增删改查. 窗口如下: 定义打开与关闭连接函数,方便每次调用: 增加指令: 删除指令: 修改指令: 查找指令: 表格情况:

  7. 使用jdbc实现简单的mvc模式的增删改查

    Mvc模式设计: 视图:添加界面(addUser.jsp),修改界面(updateUser.jsp),显示页面(allUser.jsp) 控制器:添加信息控制器(AddUserServlet),修改信 ...

  8. 简单实现 nodejs koa2 mysql 增删改查 制作接口

    1.首先 在电脑上安装 nodejs (此处略过) 2.全局安装 koa2 (这里使用的淘宝镜像cnpm,有兴趣的同学可以自行搜索下) cnpm install koa-generator -g 3. ...

  9. Ado.net中简单的DBHelper类(增删改查)

    private static string connString = "server=.;database=hotel;uid=aa;pwd=123";//最好从配置文件中取出 p ...

随机推荐

  1. Yii2 restful api创建,认证授权以及速率控制

    Yii2 restful api创建,认证授权以及速率控制 下面是对restful从创建到速率控制的一个详细流程介绍,里面的步骤以及截图尽可能详细,熟悉restful的盆友可能觉得过于繁琐,新手不妨耐 ...

  2. 集成JUnit测试错误java.lang.IllegalStateException: Failed to load ApplicationContext

    1 详细错误信息 java.lang.IllegalStateException: Failed to load ApplicationContext at org.springframework.t ...

  3. LOJ #2547 Luogu P4517「JSOI2018」防御网络

    好像也没那么难写 LOJ #2547 Luogu P4517 题意 在一棵点仙人掌中等概率选择一个点集 求选出点集的斯坦纳树大小的期望 定义点仙人掌为不存在一个点在多个简单环中的连通图 斯坦纳树为在原 ...

  4. Luogu P4479 [BJWC2018]第k大斜率

    一道清真简单的好写的题 Luogu P4479 题意 求点集两两连出的直线中斜率第$ k$大的直线 $ Solution$ 二分答案,设$x_j \geq x_i$ 若点$ (x_i,y_i)$和点$ ...

  5. Leetcode#832. Flipping an Image(翻转图像)

    题目描述 给定一个二进制矩阵 A,我们想先水平翻转图像,然后反转图像并返回结果. 水平翻转图片就是将图片的每一行都进行翻转,即逆序.例如,水平翻转 [1, 1, 0] 的结果是 [0, 1, 1]. ...

  6. Excel根据字符串截取单元格部分内容

    我第一列的数据是这样的 我需要 1.将“projectId=”后面的数字放到第二列, 以及 2.将”mediumId=”后面的数字放到第三列 针对1使用函数:=MID(A2,FIND("pr ...

  7. 算法 - 链的操作(三) - 返回倒数第k个节点(no.23)

    输入一个链 : 1 -> 3 -> 5 -> 6 -> 8 输入 k  = 2 返回 6 这个节点 python(2.7) def getNode(head, k): if(h ...

  8. 2017-2018-2 20165221 实验三《敏捷开发与XP实践》实验报告

    实验报告封面 姓名:谭笑 学号:20165221 班级:1652班 实验名称: JAVA--敏捷开发与XP实践 指导老师:娄嘉鹏 试验时间:15:35--17:15 实验性质:选修 实验组次:21 实 ...

  9. SpringSecurity权限表达式

    * 当我们想要使用多个权限表达式的时候,是不能直接级联调用的,也就是说,我们只能手写了. @Override protected void configure(HttpSecurity http) t ...

  10. 20165231 预备作业二:学习基础和C语言基础调查

    微信文章感想 读了娄老师微信公众号中的文章,老师给我们的启示首先就是要坚持,万事开头难,但是只要肯坚持就一定会有所成就,不管是学习还是生活方面.其中最有触动的就是减肥了,是我三四年来一直难以完成的目标 ...