跟ChatGPT学Flask网络编程(5) – 网页跳转

这篇文章我们来看一下在flask中如何管理网页跳转和消息闪现。

:介绍一下flask redirect的用法ChatGPT:在 Flask 中,redirect 是一个用于重定向 URL 的函数。它可以用于重定向到另一个页面、路由或任何其他 URL。可以在需要重定向时使用它,例如在表单提交后将用户重定向回某个页面,或者在登录成功后将用户重定向到他们的个人资料页面等。使用 Flask 中的 redirect 很简单,只需要在视图函数中导入 redirect 函数,并在需要重定向的地方调用它即可。例如:

from flask import Flask, redirect, url_for

app = Flask(__name__)

@app.route('/')
def home():
    return 'Hello, World!'

@app.route('/about')
def about():
    return 'This is the about page.'

@app.route('/redirect')
def do_redirect():
    # redirect to the home page
    return redirect(url_for('home'))

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

在上面的例子中,do_redirect 视图函数中调用了 redirect 函数,并将其作为返回值返回。redirect 函数需要传入一个参数,即需要重定向的 URL,可以使用 Flask 中的 url_for 函数来生成 URL。在这个例子中,redirect 函数将用户重定向到了 / 这个 URL 上,也就是 home 视图函数所对应的 URL。需要注意的是,使用 Flask 中的 redirect 函数时,必须要使用绝对路径或者完整的 URL。因此,通常需要使用 Flask 中的 url_for 函数来生成 URL。此外,使用 redirect 函数进行重定向时,浏览器将向新的 URL 发出新的请求,因此重定向后,浏览器将看到新的 URL。

将上面代码中的/redirect改为/admin,模拟实际使用中不想让用户进入后台管理,跳转到起始页面的情况。

网页运行如下:

图片

输入回车后网页跳转到了”home”所在的路由位置。

图片

这里我们留意到了一个新的函数url_for(),来问下chatgpt这个函数是干什么用的。

ChatGPT: url_for() 是 Flask 的一个函数,它用于根据视图函数名称生成 URL。它可以根据视图函数的名称和其他参数生成视图函数的 URL,而不需要手动构造 URL。这使得在应用程序中使用 URL 更加灵活和易于维护。例如,假设你有一个名为 home 的视图函数,你可以在 Flask 中使用 url_for() 来生成该视图函数的 URL:


from flask import Flask, url_for

app = Flask(__name__)

@app.route('/')
def home():
    return 'This is the home page'

with app.test_request_context():
    print(url_for('home'))

在这个例子中,我们使用 url_for(‘home’) 生成了视图函数 home 的 URL。url_for() 函数的参数是要生成 URL 的视图函数的名称。因为视图函数的名称是唯一的,所以 Flask 可以通过名称找到对应的视图函数。

:介绍一下flask中的flash模块

ChatGPT:在 Flask 中,flash 模块用于在用户的 Web 浏览器中显示临时消息。它可以用于向用户显示警告、成功或错误等消息。flash 模块需要一个安全的密钥来工作。你可以在 Flask 应用程序中设置密钥,例如:

from flask import Flask

app = Flask(__name__)
app.secret_key = 'super_secret_key'


然后,你可以在视图函数中使用 flash() 函数向用户显示消息。例如:

from flask import Flask, render_template, flash

app = Flask(__name__)
app.secret_key = 'super_secret_key'

@app.route('/')
def home():
    flash('欢迎回来!')
    return render_template('home.html')

在这个例子中,flash() 函数将显示一条消息“欢迎回来!”。此消息将会在用户的下一次请求中显示出来。要在模板中显示这个消息,你需要在模板中使用 get_flashed_messages() 函数。例如:

{% with messages = get_flashed_messages() %}
{% if messages %}
<ul class="flashes">
{% for message in messages %}
<li>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
{% endwith %}


在这个例子中,get_flashed_messages() 函数将返回一个列表,其中包含所有闪现的消息。然后,模板使用一个循环来遍历这个列表,并将每条消息显示为一个列表项。需要注意的是,flash 模块只能用于临时性的消息,例如一次性的提示或者警告。如果你需要向用户显示长期存在的消息,例如用户信息或错误信息,那么你应该将这些消息存储在数据库或者其他持久化存储中。

:{% %}里面是什么代码?

ChatGPT:{% %} 是 Flask 模板中用于包含 Python 代码的标记,可以用来控制模板中的流程和逻辑。其中的代码使用 Python 语法编写,可以访问 Flask 应用程序中定义的变量和函数,并根据需要执行各种操作。常见的操作包括条件语句(if、elif、else)、循环语句(for、while)、定义变量等。在模板渲染时,{% %} 中的代码会被 Flask 执行,并将执行结果插入到 HTML 页面中。

:<li>{{ message }}</li> 这段代码是什么意思?

ChatGPT:这段代码使用了 Flask 模板语言中的变量插值语法,其中 {{ message }} 是一个变量名,它会被替换成具体的变量值。具体来说,这里的 message 是在 Flask 应用程序中使用 flash() 函数添加到 session 中的一条消息,用于在登录成功后向用户显示一条提示信息。在 HTML 页面中,这个变量会被插入到 <li> 标签中,从而将其显示为一个列表项。网页运行结果如下:

图片

小结:
1、Redirect()函数用于网页重定向。
2、url_for()函数用于生成视图函数的url,通常配合Redirect函数使用3、flash()函数用于向用户显示临时消息,如果要显示出来,在模板中添加get_flashed_messages()函数

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注