请帮我在python中用flask写一个网页登录界面,要求能选择并点击”读者“和”管理员“或”root“并输入对应的ID和密码
时间: 2023-09-13 22:03:48 浏览: 42
好的,以下是一个示例代码:
```python
from flask import Flask, render_template, request, redirect, url_for
app = Flask(__name__)
# 定义管理员和读者的账号密码
admin = {'id': 'admin', 'password': 'admin'}
reader = {'id': 'reader', 'password': 'reader'}
@app.route('/', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
user_type = request.form['user_type']
user_id = request.form['user_id']
password = request.form['password']
if user_type == 'admin':
if user_id == admin['id'] and password == admin['password']:
return redirect(url_for('admin_page'))
elif user_type == 'reader':
if user_id == reader['id'] and password == reader['password']:
return redirect(url_for('reader_page'))
return render_template('login.html')
@app.route('/admin')
def admin_page():
return 'Welcome Admin!'
@app.route('/reader')
def reader_page():
return 'Welcome Reader!'
if __name__ == '__main__':
app.run(debug=True)
```
在这个示例代码中,我们定义了两个账号:`admin` 和 `reader`,并分别设置了账号密码。在登录界面中,用户可以选择账号类型(`admin` 或 `reader`),并输入对应的账号和密码。如果账号密码匹配,就会跳转到对应的页面。如果账号密码不匹配,则会继续停留在登录界面。
登录界面的 HTML 模板可以是这样的:
```html
<!DOCTYPE html>
<html>
<head>
<title>Login Page</title>
</head>
<body>
<h1>Login Page</h1>
<form method="POST">
<label for="user_type">User Type:</label>
<select id="user_type" name="user_type">
<option value="admin">Admin</option>
<option value="reader">Reader</option>
</select>
<br>
<br>
<label for="user_id">User ID:</label>
<input type="text" id="user_id" name="user_id">
<br>
<br>
<label for="password">Password:</label>
<input type="password" id="password" name="password">
<br>
<br>
<input type="submit" value="Submit">
</form>
</body>
</html>
```
这个 HTML 模板包含了一个下拉菜单,可以选择账号类型,以及两个输入框,用于输入账号和密码。提交表单时,会向 Flask 程序发送一个 POST 请求。在 Flask 程序中,我们可以通过 `request.form` 来获取表单数据。
当账号密码匹配时,我们使用 `redirect` 函数来跳转到对应的页面。这里我们使用了 `url_for` 函数来生成页面的 URL,这样即使我们修改了页面的 URL,程序中的跳转也不需要修改。
你可以将这个示例代码保存为 `app.py`,然后在命令行中运行 `python app.py` 来启动 Flask 程序。然后在浏览器中访问 `http://127.0.0.1:5000/`,就可以看到登录界面了。