Django-website 程序案例系列-5 模态对话框实现提交数据

html代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .hide{       #隐藏效果
            display: none;
        }
        .shade{      #模态框遮蔽层效果
            position: fixed;
            top: 0;
            right: 0;
            left: 0;
            bottom: 0;
            background: black;
            opacity: 0.6;
            z-index: 100;
        }
        .add-modal{      #模态框弹出层效果
            position: fixed;
            height: 300px;
            width: 400px;
            top: 100px;
            left: 50%;
            z-index: 101;
            border: 1px solid black;
            background: white;
            margin-left: -200px;
        }
    </style>
</head>
<body>
    <h1>主机信息</h1>
    <div>
        <input type="button" id="add_host" value="添加"/>
    </div>
    <table border="1">
        <thead>
            <tr>
                <th>序号</th>
                <th>主机名</th>
                <th>IP</th>
                <th>端口</th>
                <th>业务线ID</th>
                <th>业务线名称</th>
            </tr>
        </thead>
        <tbody>
              {% for row in v1 %}
                  <tr host-id="{{ row.id }}" bid="{{ row.b_id }}">
                      <td>{{ forloop.counter }}</td>
                    <td>{{ row.hostname }}</td>
                    <td>{{ row.ip }}</td>
                    <td>{{ row.port }}</td>
                    <td>{{ row.b_id }}</td>
                    <td>{{ row.b.caption }}</td>
                  </tr>
               {% endfor %}
        </tbody>
    </table>

    <div class="shade hide"></div>           #模态框图层1 遮蔽层
    <div class="add-modal hide">             #模态对话框2 弹出层   add-modal绑定提交事件
        <form action="/host" method="POST">  #弹出层的form表单
            <div class="group">
                <input type="text" placeholder="主机名" name="hostname"/>
            </div>
            <div class="group">
                <input type="text" placeholder="IP" name="ip"/>
            </div>
            <div class="group">
                <input type="text" placeholder="端口" name="port"/>
            </div>
            <div class="group">
                <select name="b_id">
                    {% for op in b_list %}
                        <option value="{{ op.id }}">{{ op.caption }}</option>
                    {% endfor %}
                </select>
            </div>
            <input type="submit" value="提交"/>
            <input type="button" id="cancel" value="取消"/>  # cancel绑定取消事件
        </form>
    </div>
    <script src="static/js/jquery.min.js"></script>
    <script>
        $(function() {        #页面加载完成执行一个GET请求
            $(‘#add_host‘).click(function(){         #绑定点击事件
                $(‘.shade,.add-modal‘).removeClass(‘hide‘);  #触发删除隐藏效果(弹出模态框)
            });
            $(‘#cancel‘).click(function(){    #绑定点击事件
                $(‘.shade,.add-modal‘).addClass(‘hide‘);  #触发增加隐藏效果(关闭模态框)
            });
        })
    </script>
</body>
</html>

 views.py

def host(request):
    if request.method == "GET":     #页面加载时的GET请求
        v1 = models.Host.objects.filter(id__gt=0)
        b_list = models.Business.objects.all()
        return render(request, ‘host.html‘, {‘v1‘: v1, ‘b_list‘: b_list})
    elif request.method == "POST":
        h = request.POST.get(‘hostname‘)
        i = request.POST.get(‘ip‘)
        p = request.POST.get(‘port‘)
        b = request.POST.get(‘b_id‘)
        # models.Host.objects.create(
        #     hostname=h,
        #     ip=i,
        #     port=p,
        #     b=models.Business.objects.get(id=b),
        # )
        models.Host.objects.create(    #POST方法提交的数据在数据库中添加进去
            hostname=h,
            ip=i,
            port=p,
            b_id=b
        )
        return redirect(‘/host‘)

  

时间: 2024-10-09 11:46:45

Django-website 程序案例系列-5 模态对话框实现提交数据的相关文章

Django-website 程序案例系列-1 CSRF

django为用户实现防止跨站请求伪造的功能 需要配置settings.py:  django.middleware.csrf.CsrfViewMiddleware 1. form表单提交 <form action="/logi/" method="POST"> {% csrf_token %} #需要在form表单中添加{% csrf_token %} <input type="text" name="user&qu

Django-website 程序案例系列-16 modle.form(表单验证)

案例程序: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form action="/fm/" method="POST"> #3个输入框分别是user/pwd/ema

Django-website 程序案例系列-18 多表跨表操作优化

详解Django的 select_related 和 prefetch_related 函数对 QuerySet 查询的优化 在数据库有外键的时候,使用 select_related() 和 prefetch_related() 可以很好的减少数据库请求的次数,从而提高性能.本文通过一个简单的例子详解这两个函数的作用.虽然QuerySet的文档中已经详细说明了,但本文试图从QuerySet触发的SQL语句来分析工作方式,从而进一步了解Django具体的运作方式. 本来打算写成一篇单独的文章的,但

Django-website 程序案例系列-4 ORM数据库操作

数据库表的创建: 使用mysql时注意,在setting.py中的设置: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', #mysql的引擎 'NAME': '', #数据库名 'USER': '', #数据库用户名 'PASSWORD': '', #数据库密码 'HOST': '127.0.0.1', #数据库host 'PORT': '3306', #数据库端口 },} 还需在项目文件夹下的__init__.p

Django-website 程序案例系列-10 验证装饰器

FBV装饰器: def auth(func): #装饰器函数 def inner(request, *args, **kwargs): v = request.COOKIES.get('username') if not v: return redirect('/log/') return func(request, *args, **kwargs) return inner 使用方法: 在函数上加上@auth CBV装饰器: 第一种方式:利用django自带的工具 def auth(func)

Django-website 程序案例系列-17 forms表单验证的字段解释

1.Django内置字段如下: Field required=True, 是否允许为空 widget=None, HTML插件 label=None, 用于生成Label标签或显示内容 initial=None, 初始值 help_text='', 帮助信息(在标签旁边显示) error_messages=None, 错误信息 {'required': '不能为空', 'invalid': '格式错误'} show_hidden_initial=False, 是否在当前插件后面再加一个隐藏的且具

微信小程序--获取form表单初始值提交数据

<form bindsubmit="formSubmit"> <view class="txt"> <view class="ima"></view> <view class="txt2">姓名</view> <input placeholder="请输入姓名" maxlength="10" class=&qu

QT创建模态对话框阻塞整个应用程序和非模态对话框唯一性约束的简单示例

QT创建模态对话框阻塞整个应用程序和非模态对话框唯一性约束的简单示例 部分代码: // 创建模态对话框阻塞整个应用程序和非模态对话框唯一性约束 QMenu *pDialog = mBar->addMenu(QString::fromLocal8Bit("对话框")); QAction *pTopDialog = pDialog->addAction(QString::fromLocal8Bit("模态对话框")); connect(pTopDialog,

VS2010/MFC对话框:非模态对话框的创建及显示

非模态对话框的创建及显示 上一节讲了模态对话框及其弹出过程,本节接着讲另一种对话框--非模态对话框的创建及显示. 已经说过,非模态对话框显示后,程序其他窗口仍能正常运行,可以响应用户输入,还可以相互切换.鸡啄米会将上一讲中创建的Tip模态对话框改为非模态对话框,让大家看下效果. 非模态对话框的对话框资源和对话框类 实际上,模态对话框和非模态对话框在创建对话框资源和生成对话框类上是没有区别的,所以上一讲中创建的IDD_TIP_DIALOG对话框资源和CTipDlg类都不需要修改. 创建及显示非模态