• popup介绍


    一、作用

    用于使浏览器自动生成弹窗

    二、示例

    1、新建Django项目,新建APP:app01, 项目根目录下新建文件夹static

    2、静态文件配置,在settings.py中配置static:

    3、路由配置, urls.py:

    from django.contrib import admin
    from django.urls import path
    from app01 import views
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('index/', views.index),
        path('add/city/', views.add_city),
    ]
    View Code

    4、编写view函数,views.py:

    from django.shortcuts import render, HttpResponse
    
    
    def index(request):
        """首页"""
        return render(request, "index.html", locals())
    
    
    def add_city(request):
        """添加城市"""
    
        if request.method == "POST":
            # 获取数据  存入数据库
            # ........
            city_info = {"id": 5, "city": "成都"}
            return render(request, "pop-response.html", locals())  # 新建完成后自动关闭窗口
        return render(request, "add_city.html")
    View Code

    5、templates模板编写:

    index.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <form>
        <p><input type="text"></p>
        <p>
            <select id="city">
                <option value=1>北京</option>
                <option value=2>天津</option>
                <option value=3>上海</option>
                <option value=4>深圳</option>
            </select>
            <input type="button" value="+" onclick="popUp();">
        </p>
    </form>
    
    <script>
        function func(cityId, cityTitle){
            //构造一个option标签
            var tag = document.createElement("option");
            tag.value = cityId;
            tag.innerText = cityTitle;
            //找到select框  将option添加进去
            var city = document.getElementById("city");
            city.appendChild(tag);
        }
    
        function popUp() {
            //打开新弹窗  (弹窗地址,弹窗名, 弹窗格式设置)
            window.open("/add/city/", "x1", "status=1, height=500, width=500, toolbar=0, resizeable=0");
    
        }
    </script>
    </body>
    </html>
    View Code

    add_city.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .box {
                 200px;
                height: 200px;
                border: 1px solid dodgerblue;
            }
        </style>
    </head>
    <body>
    <h3>新建城市</h3>
    <div class="box">
        <form method="post">
            {% csrf_token %}
            <input type="text" name="city">
            <input type="submit" value="提交">
        </form>
    </div>
    </body>
    </html>
    View Code

    pop-response.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>正在关闭</title>
    </head>
    <body>
    
    <script src="/static/commons.js"></script>
    {#引入文件,里面的'{{ id }}'不会被识别,就只是把它当做普通的字符串打印出来#}
    
    <script>
    
        //function close(){
            //window.close();
        //}
        //close();
    
        // 自执行函数   在写完函数后, 后面直接加括号便可以执行,括号内可以传递参数, 执行效果同上
        (function(){
            // 获取到是谁把这个页面打开的
            opener.func({{ id }}, "{{ city }}"); //传递参数 {"id": 5, "city": "成都"}
    
            window.close();
        })();
    
        // 可以传参:
        //(function(arg){
    
        //})("x1")  // arg=x1
    </script>
    </body>
    </html>
    View Code

    6、static文件夹下新建文件commons.js:

    alert('{{id}}');  //在pop-response.html中引入它
    View Code

    7、启动项目,在浏览器输入:http://127.0.0.1:8088/index/进入首页,点击按钮弹出新窗口,新增城市,提交后窗口自动关闭

  • 相关阅读:
    XXX系统讨论
    问题账户需求分析
    2017年秋季个人阅读计划
    《软件工程概论》的评价
    第二阶段Day10
    每周总结16
    假期学习记录13(ImageView实现动态加载网络图片)
    假期学习记录12(android与web服务器之间的list/json数组的消息传递)
    假期学习记录11(NavigationView点击事件无效)
    假期学习记录10(自定义AlertDialog,按钮关闭AlertDialog)
  • 原文地址:https://www.cnblogs.com/yanlin-10/p/9671367.html
Copyright © 2020-2023  润新知