制作一个用户登录界面

Flask-WTF扩展使用Python类来表示web表单。表单类只是将表单的字段定义为类变量。

再次考虑到分离的问题,我将使用一个新的app/forms.py模块来存储我的web表单类。首先,让我们定义一个用户登录表单,它要求用户输入用户名和密码。表单还将包括一个“记住我”复选框和一个提交按钮:

app/forms.py:

from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, BooleanField, SubmitField
from wtforms.validators import DataRequired

class LoginForm(FlaskForm):
    username = StringField('Username', validators=[DataRequired()])
    password = PasswordField('Password', validators=[DataRequired()])
    remember_me = BooleanField('Remember Me')
    submit = SubmitField('Sign In')

大多数Flask扩展使用flask_<name>命名约定作为它们的顶级导入符号。在本例中,Flask-WTF的所有符号都在flask_wtf下。这就是从app/forms.py顶部导入FlaskForm基类的地方。

表示我用于此表单的字段类型的四个类是直接从WTForms包导入的,因为Flask-WTF扩展不提供自定义版本。对于每个字段,在LoginForm类中创建一个作为类变量的对象。每个字段都有一个描述或标签作为第一个参数。

您在某些字段中看到的可选validators参数用于将验证行为附加到字段。datarerequired验证器只是检查提交的字段是否为空。有更多的验证器可用,其中一些将以其他形式使用。

下一步是将表单添加到HTML模板中,以便它可以在web页面上呈现。好消息是,在LoginForm类中定义的字段知道如何将自己呈现为HTML,因此此任务相当简单。下面你可以看到登录模板,我将把它存储在app/templates/login.html文件中:

app/templates/login.html:

{% extends "base.html" %}

{% block content %}
    <h1>Sign In</h1>
    <form action="" method="post" novalidate>
        {{ form.hidden_tag() }}
        <p>
            {{ form.username.label }}<br>
            {{ form.username(size=32) }}
        </p>
        <p>
            {{ form.password.label }}<br>
            {{ form.password(size=32) }}
        </p>
        <p>{{ form.remember_me() }} {{ form.remember_me.label }}</p>
        <p>{{ form.submit() }}</p>
    </form>
{% endblock %}

此时,您可以运行应用程序并在web浏览器中查看表单:在浏览器的地址栏中输入http://localhost:5000/

好的,下面是一个简单的网页登陆界面的HTML和CSS代码,你可以根据自己的需求进行修改和完善。 HTML代码: ``` <!DOCTYPE html> <html> <head> <title>登陆界面</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <div class="login-box"> <h2>用户登陆</h2> <form> <label for="username">用户名:</label> <input type="text" name="username" id="username" placeholder="请输入用户名"> <label for="password">密码:</label> <input type="password" name="password" id="password" placeholder="请输入密码"> <input type="submit" name="submit" value="登陆"> </form> </div> </body> </html> ``` CSS代码: ``` body { background-color: #f2f2f2; font-family: Arial, sans-serif; } .login-box { background-color: #fff; border-radius: 5px; box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2); margin: 100px auto; padding: 20px; width: 400px; } h2 { color: #666; margin-bottom: 20px; text-align: center; } form label { display: block; font-size: 14px; margin-bottom: 5px; } form input[type="text"], form input[type="password"] { border: none; border-radius: 3px; box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.1); display: block; font-size: 16px; margin-bottom: 20px; padding: 10px; width: 100%; } form input[type="submit"] { background-color: #4CAF50; border: none; border-radius: 3px; color: #fff; cursor: pointer; font-size: 16px; padding: 10px; width: 100%; } form input[type="submit"]:hover { background-color: #3e8e41; } ``` 你可以将这些代码复制到一个文本编辑器中,然后将文件保存为.html和.css文件,再在浏览器中打开.html文件,即可看到效果。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DRobot

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值