使用ajax的Python表单生成KeyE

2024-05-12 20:03:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Python控制器文件、一个表单和一个javascript文件,在单击表单上的submit按钮时执行ajax代码。表单将正确显示。当我在表单中输入数据时,ajax代码触发并执行驻留在控制器.py文件。当代码执行时,我将“inside class PostRegistration”打印到控制台,然后通过使用代码数据=网络输入(). 当我将数据内容打印到控制台时,我得到“data=”。我希望看到形式名称和价值观。然后我执行一行代码,上面写着print(数据.用户名)但这会生成“keyror:'username'”。我的假设是表单字段名不会被网络输入()命令,但我不确定。如何检索输入到表单输入元素中的数据?非常感谢任何帮助。在

以下是涉及的文件:

在控制器.py在

import web
from Models import RegisterModel

urls = (

    '/', 'Home',
    '/register', 'Register',
    '/postregistration', 'PostRegistration'
)

render = web.template.render("views/templates", base="MainLayout")
app = web.application(urls, globals())

# Classes/Routes

class Home:
    def GET(self):
        return render.home()

class Register:
    def GET(self):
        return render.register()

class PostRegistration:
    def POST(self):
        print("inside class PostRegistration")
        data = web.input()
        print("data=",data)
        print(data.username)
        return data

if __name__ == "__main__":
    app.run()

在注册.html在

^{pr2}$

在脚本.js在

$(document).ready(function(){
    console.log("loaded");

    $(document).on("submit", "#register-form", function(e){
        e.preventDefault();

        var form = $('#register-form').serialize();
        $.ajax({
            url: "/postregistration",
            type: "POST",
            data: form,
            success: function(response){
                console.log(response);
            }
        });
    });
});

在主版面.html在

$def with (page)

$var css: static/css/bootstrap3.3.7.css static/css/material.css static/css/ripple.min.css
$var js: static/js/jquery-3.2.1.js static/js/bootstrap3.3.7.js static/js/material.js static/js/ripple.min.js static/js/scripty.js

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CodeWizard</title>

    $if self.css:
        $for style in self.css.split():
            <link rel="stylesheet" href="$style" />

</head>

<body>
    <div id="app">
        <div class="navbar navbar-info navbar-fixed-top">
            <div class="navbar-header">
                <a class="navbar-brand">CodeWizard</a>
            </div>
            <ul class="nav navbar-nav">
                <li>
                    <a class="waves-effect" href="/">Home Feed<div class="ripple-container"></div></a>
                </li>
                <li>
                    <a class="waves-effect" href="/discover">Discover<div class="ripple-container"></div></a>
                </li>
                <li>
                    <a class="waves-effect" href="/profile">Profile<div class="ripple-container"></div></a>
                </li>
                <li>
                    <a class="waves-effect" href="/settings">Settings<div class="ripple-container"></div></a>
                </li>
            </ul>
            <div class="pull-right">
                <a href="/register" class="btn btn-raised btn-default waves-effect">Register</a>&nbsp;&nbsp;
            </div>
        </div>
        <br /><br />
        $:page
    </div>

    $if self.js:
        $for script in self.js.split():
            <script src="$script"></script>

</body>
</html>

Tags: 数据selfdivregister表单datajsstatic