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

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

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

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)
                

原文地址:https://www.cnblogs.com/maaosheng/p/11621442.html

时间: 2024-11-09 03:51:49

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

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

package ceet.ac.cn.dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import ceet.ac.cn.model.Admin; public class AdminDao {

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

四种简单的sql语句(增删改查语句) 一.插入语句 insert into [table] ([column],[column],[column]) values(?,?,?) 二.删除语句 delete from [table] where column = ? 三.修改语句 update [table] set column = ? where column = ? 四.查询语句 1)查询单条记录的所有字段 select * from [table] where [column] = ? 2

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

#Redis简单的数据操作(增删改查): 字符串类型 string 1. 存储: set key value 127.0.0.1:6379> set username zhangsan OK 2. 获取: get key 127.0.0.1:6379> get username "zhangsan" 以下同理: 127.0.0.1:6379> set age 23 OK 127.0.0.1:6379> get age "23" 127.0.0

(写给像我一样刚离开校园进入公司的小菜鸟)在领域架构下,如何实现简单的展示页面以及增删改查(第一步)

第一次到公司,现在进行的项目已经开始了有一段时间了,底层架构早已搭建好,经过一段时间熟悉,现在为自己记录一下 大致结构如此图所示,我们需要完成的任务只需要涉及三个类库Domain,Model,Web 流程如下: 1.Model: 1.1 Entities文件=>>新建实体模型 2.Domain: 2.0 Domain类库下有个模型工厂文件件ModelCreateFactory在里面添加实体模型与数据模型转换的TSETZAaaaModelFactory.cs 代码如下 1 using Syste

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

Mvc模式设计: 视图:添加界面(addUser.jsp),修改界面(updateUser.jsp),显示页面(allUser.jsp) 控制器:添加信息控制器(AddUserServlet),修改信息控制器(UpdateUserServlet),删除信息控制器(DeleteUserServlet),显示信息控制器(FindAllUserServlet) 模型:userbean 数据库层:DBBean 总体设计: 添加信息模块:用户通过添加信息界面(addUser.jsp)提交表单,提交的信息有

FMDB的简单介绍,和数据库增删改查的使用

#import <Foundation/Foundation.h> #import "Book.h" #import "FMDatabase.h" @interface FMDBBookHandle : NSObject +(instancetype)sharedFMDB; //创建增删改查单例 -(void)insertBook:(Book *)book; -(void)deleteBook:(Book *)book; -(void)updateBoo

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

private static string connString = "server=.;database=hotel;uid=aa;pwd=123";//最好从配置文件中取出 public static SqlConnection conn = new SqlConnection(connString); //公用的增删改方法 public static bool ZhengShanGai(string sql) { bool flag = false; SqlCommand com

使用mybatis框架的一个简单的用户商品的增删改查例子

---恢复内容开始--- 这个例子的实现过程:用户登录----->servlet验证用户是否存在----->显示商品信息----->可以进行商品的删除.修改.添加功能(商品信息是分页显示的) 例子很简单,但是基本的mybatis框架一个也差不多是这样的 数据库表格如下 项目的结构 1.src目录下的mybatis文件和外部源文件 jdbc.properties jdbc.driver=oracle.jdbc.driver.OracleDriver jdbc.url=jdbc:oracle

用文件实现一个简单的系统。包括增删改查,和内容的审核

4.功能要求: (1)需要在程序开始的注释中注明班级.学号.姓名.(1 分) (2)程序开始运行显示登录界面(5 分) 提示用户按照下列格式依次输入用户名和密码: Username: Password: 用户名和密码全部正确,进入系统主界面,如果用户名错误:抛出异常提示"用户名录入错误":密码错误,抛出异常提示"密码录入错误",如果密码录入三次错误,抛出异常提示"该用户三次录入错误,已被系统锁定". 正确的用户名和密码事前保存在用户 user.t