我会详细讲解“一个基于flask的web应用诞生 使用模板引擎和表单插件(2)”的完整攻略,并包含两条示例说明。
【标题1:准备工作】
在开始构建一个基于flask的web应用之前,需要进行一些准备工作。
- 安装Flask
Flask是一个Python的轻量级Web框架,如果你还没有安装它,请先通过pip安装。
pip install Flask
- 获取示例代码
在开始构建web应用之前,建议您先从GitHub上获取示例代码,这可以让您更好地理解整个应用。
git clone https://github.com/pallets/flask.git
【标题2:创建Flask应用】
- 导入Flask应用
创建一个空白文件夹,并在该文件夹中创建一个名为app.py的Python文件。导入Flask应用程序并创建应用程序对象:
from flask import Flask
app = Flask(__name__)
- 创建路由
在Flask应用程序中,路由是由@符号和一个函数组成的。路由定义网站的URL路径,函数则定义网站在该路径上执行的操作。以下是一个带有路由的示例:
@app.route('/')
def home():
return 'Hello, World!'
在这个示例中,我们定义了一个路由(/),它是网站的根目录,然后是home()函数。当用户访问网站时,会显示'Hello, World!'消息。
【标题3:使用模板引擎】
在很多情况下,网站上的内容都是动态生成的。Flask使用Jinja2模板引擎来生成HTML页面。Jinja2是一个流行的模板引擎,它可以将变量、表达式和控制结构插入到文本中,从而生成HTML内容。
- 安装Jinja2
在Python环境中,使用pip来安装Jinja2:
pip install Jinja2
- 在Flask应用程序中使用Jinja2
要在Flask应用程序中使用Jinja2,需要在app.py文件中导入render_template方法,并将它与一个路由组合使用,如下所示:
from flask import render_template
@app.route('/')
def home():
return render_template('index.html')
在这个例子中,我们将index.html模板与/路由相关联。当用户访问网站的根目录时,Flask将使用Jinja2模板引擎来呈现HTML页面。
【标题4:使用表单插件】
表单是网站上收集信息的一种常见方法。Flask-WTF是一个Flask扩展,可用于生成和验证表单。
- 安装Flask-WTF
在Python环境中,使用pip来安装Flask-WTF:
pip install Flask-WTF
- 在Flask应用程序中使用表单
首先,在app.py文件中导入Flask表单和Flask-WTF,如下所示:
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import DataRequired
接下来,创建一个继承自FlaskForm的LoginForm类,并定义表单中的字段和验证器:
class LoginForm(FlaskForm):
username = StringField('Username', validators=[DataRequired()])
password = PasswordField('Password', validators=[DataRequired()])
submit = SubmitField('Sign In')
最后,定义一个路由,向用户呈现LoginForm表单,并从表单中接收值:
@app.route('/login', methods=['GET', 'POST'])
def login():
form = LoginForm()
if form.validate_on_submit():
return f"{form.username.data} logged in successfully!"
return render_template('login.html', form=form)
以上就是使用表单插件在Flask应用程序中生成并验证表单的完整过程。
【示例1:Flask首页展示】
下面是一个示例:如何使用Flask和Jinja2,以及一些HTML和CSS代码来实现一个简单的网站。
- 创建一个名为app.py的Python脚本,并将以下代码粘贴在脚本的顶部,以导入必要的依赖项:
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def home():
return render_template('home.html')
- 在Flask应用程序的主文件夹中创建一个名为“templates”的文件夹,并在该文件夹中创建一个名为“home.html”的HTML文件:
<!doctype html>
<html>
<head>
<title>My Awesome Homepage</title>
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='styles.css') }}">
</head>
<body>
<h1>Welcome to My Awesome Homepage</h1>
<p>Here's some content for my awesome homepage.</p>
<button>Click me!</button>
</body>
</html>
- 在Flask应用程序的主文件夹中创建一个名为“static”的文件夹,并在该文件夹中创建一个名为“styles.css”的CSS文件:
body {
font-family: sans-serif;
background-color: #F0F0F0;
margin: 0;
padding: 0;
}
h1 {
color: #333;
text-align: center;
margin: 50px 0;
}
p {
max-width: 600px;
margin-left: auto;
margin-right: auto;
text-align: center;
}
button {
display: block;
margin-left: auto;
margin-right: auto;
margin-top: 50px;
padding: 10px 20px;
font-size: 20px;
border-radius: 5px;
border: none;
background-color: #333;
color: #FFF;
cursor: pointer;
}
- 运行Flask应用程序,并在浏览器中访问该应用程序的根目录,即http://localhost:5000/,您应该可以看到在home.html中定义的内容,以及在styles.css中定义的样式。
【示例2:使用Flask-WTF表单插件实现用户登录】
下面是一个示例:如何使用Flask和Flask-WTF表单插件来实现一个简单的登录表单。
- 创建一个名为app.py的Python脚本,并将以下代码粘贴在脚本的顶部,以导入必要的依赖项:
from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import DataRequired
app = Flask(__name__)
app.config['SECRET_KEY'] = 'my-secret-key'
class LoginForm(FlaskForm):
username = StringField('Username', validators=[DataRequired()])
password = PasswordField('Password', validators=[DataRequired()])
submit = SubmitField('Log In')
@app.route('/login', methods=['GET', 'POST'])
def login():
form = LoginForm()
if form.validate_on_submit():
return f"Logged in as {form.username.data} successfully!"
return render_template('login.html', form=form)
- 在Flask应用程序的主文件夹中创建一个名为“templates”的文件夹,并在该文件夹中创建一个名为“login.html”的HTML文件:
<!doctype html>
<html>
<head>
<title>Login Form</title>
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='styles.css') }}">
</head>
<body>
<h1>Login Form</h1>
<form action="{{ url_for('login') }}" method="post">
{{ form.csrf_token }}
<div>
{{ form.username.label }}
{{ form.username }}
</div>
<div>
{{ form.password.label }}
{{ form.password }}
</div>
<div>
{{ form.submit }}
</div>
</form>
</body>
</html>
-
在Flask应用程序的主文件夹中创建一个名为“static”的文件夹,并在该文件夹中创建一个名为“styles.css”的CSS文件(代码同示例1)。
-
运行Flask应用程序,并在浏览器中访问该应用程序的登录页面,即http://localhost:5000/login。您应该可以看到一个简单的登录表单,该表单包含一个用户名字段、一个密码字段和一个登录按钮。如果您输入了正确的用户名和密码并点击了登录按钮,您应该会看到一个消息,显示您已成功登录。
以上就是使用Flask-WTF表单插件实现用户登录的完整过程。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一个基于flask的web应用诞生 使用模板引擎和表单插件(2) - Python技术站