Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python Flask中从HTML选择获取项目_Python_Flask - Fatal编程技术网

如何在Python Flask中从HTML选择获取项目

如何在Python Flask中从HTML选择获取项目,python,flask,Python,Flask,注: 我知道有很多像我一样的问题,但我真的尝试过,但任何方法都有效 我试图让用户在我的端点中获取所选选项,但它不起作用 我试过: 在select html标记上写入属性名称。 在后端,我尝试了这两个选项 type\u user=request.form.get'type\u user'和这个 type\u user=request.form['type\u user'] 我使用debbuger模式,看到auth.py没有收到任何数据,只是没有 register.html 错误: 文件D:\Dev

注:

我知道有很多像我一样的问题,但我真的尝试过,但任何方法都有效

我试图让用户在我的端点中获取所选选项,但它不起作用

我试过:

在select html标记上写入属性名称。 在后端,我尝试了这两个选项 type\u user=request.form.get'type\u user'和这个 type\u user=request.form['type\u user']

我使用debbuger模式,看到auth.py没有收到任何数据,只是没有

register.html

错误:

文件D:\Dev\patterns project\study\u room\auth.py,第15行,在 登记
--->type\u user=request.form['type\u user']我正在简化我的答案,以便更清楚

register.html-无需更改。你所拥有的一切都有用

auth.py-需要进行较小的更改。下面添加到代码中的if/else语句:

@bp.route'/register',methods='GET',POST' def寄存器: 如果request.method==“POST”: first\u name=请求。表单['first\u name'] last_name=请求。表单['last_name'] 更改部分的开始 如果禁用类型\用户,则下面的行将为无 type\u user=intrequest.form.get'type\u user' 如果在request.form中键入用户: 当前用户必须是管理员,并且可以选择 输入新用户的用户类型,请在此处阅读。 type\u user=request.form[type\u user] 其他: 必须禁用表单中的type_user字段。 这意味着标准用户或匿名者 必须正在注册新用户。所以新用户 必须是标准用户。 类型\用户=1 变更段结束 用户名=请求。表单['username'] 密码=请求。表单['password'] db=get_db 错误=无 打印类型用户 打印名字 如果不是姓和名,请键入用户、用户名和密码: 错误=请填写所有必填字段 elifdb.execute '从用户名为?'的用户中选择id',用户名, .fetchone不是无: 错误='用户{}已注册。'.formatusername 如果错误为无: 执行 '插入到用户的名字、姓氏、类型、用户名、密码值?、?、?、?、?,?', 名字、姓氏、键入用户、用户名、生成密码 db.commit 返回“auth.login”的重定向URL_ 闪光器 返回呈现模板“auth/register.html” 在HTML中使用disabled的问题是,它会使HTML完全不可用。在字典中检查类型_user会处理这种情况,如下所示:

如果在request.form中键入用户: type\u user=request.form[type\u user] 其他: 类型\用户=1 感谢@roganjosh指出了我在关注问题上的最初错误


这里的实现:

我删除了disable属性并开始工作。如果有任何具有禁用属性的解决方案,请告诉我。我不确定我是否理解,如果您想在后端获取用户输入,那么禁用下拉列表有什么意义?是的,这是一个下拉标签,但如果没有管理会话,我需要注册一个普通用户。谢谢你的帮助。这不是问题,你还移除了残疾人,这才是真正的问题。你说得对,这没什么区别。根据定义,禁用表示不可用。因此,我认为None是为禁用的select返回的正确值。
#I don't know if it is for the desabled attribute, if the user 
#is not logged so he cannot create a admin account only a normal account.
{% if g.user['type'] == 0 %}
        <div class="form-group">
          <label for="type_user">Type of User <span style="color: red">*</span></label>
          <select class="form-control" id="type_user" name="type_user" required>
            <option value="0">Admin</option>
            <option value="1">User</option>
          </select>
        </div>
      {% else %}
      <div class="form-group">
          <label for="type_user">Type of User <span style="color: red">*</span></label>
          <select class="form-control" id="type_user" name="type_user" required disabled>
            <option value="1">User</option>
          </select>
        </div>
      {% endif %}
@bp.route('/register', methods=('GET', 'POST'))
def register():
    if request.method == 'POST':
        first_name = request.form['first_name']
        last_name = request.form['last_name']
        type_user = int(request.form.get('type_user'))
        username = request.form['username']
        password = request.form['password']
        db = get_db()
        error = None
        print(type_user)
        print(first_name)
        if not (first_name and last_name and type_user and username and password):
            error = "Please fill all requiered fields"

        elif db.execute(
            'SELECT id FROM user WHERE username = ?', (username,)
        ).fetchone() is not None:
            error = 'User {} is already registered.'.format(username)

        if error is None:
            db.execute(
                'INSERT INTO user (first_name, last_name, type, username, password) VALUES (?, ?, ?, ?, ?)',
                (first_name, last_name, type_user, username, generate_password_hash(password))
            )
            db.commit()
            return redirect(url_for('auth.login'))

        flash(error)

    return render_template('auth/register.html')