from flask import Flask,request,url_for,redirect,render_template
# request,用于访问传入请求的数据。request.args 用于访问 URL 中的查询字符串参数,request.form 用于访问表单数据。
# 使用 redirect(url_for('函数名')) 可以将用户重定向到另一个路由。url_for() 函数用于生成路由的 URL。
# Flask 使用 Jinja2 作为其模板引擎。在 render_template() 函数中,可以指定模板文件,并传递上下文数据。模板文件通常位于 Flask 应用的 templates 文件夹中。
# 使用 Flask(__name__) 初始化 Flask 应用。
# __name__ 变量是一个特殊变量,表示当前模块的名称。在这里,它确保 Flask 应用能正确地找到相关的资源文件(如模板和静态文件)
app = Flask(__name__)
# Flask 应用通过装饰器 @app.route() 来定义路由,该装饰器将 URL 路径与视图函数关联起来。
# 每个视图函数处理对应 URL 的请求,并返回响应给客户端。
# 定义了一个简单的路由 '/',对应的视图函数 login() 返回字符串 'login'。这可以作为应用的登录页面占位符
@app.route('/')
def login():
return 'login'
# 使用 <int:sid> 定义了一个动态路由,其中 sid 是一个整数类型的动态片段。
# 对应的视图函数 get_profile(sid) 根据提供的 sid 返回用户信息
@app.route('/profile/<int:sid>')
def get_profile(sid):
return 'get {} user info'.format(sid)
# 该路由用于处理包含 GET 参数的请求。
# 视图函数 get_get_parm() 从 request.args 获取名为 name 的参数,如果存在则返回包含该参数的字符串;否则,重定向到登录页面。
@app.route('/getparm')
def get_get_parm():
name = request.args.get('name')
if name:
return f'get ajax parm {name}'
else:
return redirect(url_for('login'))
# 通过设置 methods=['POST'] 限制了该路由只接受 POST 请求。
# 视图函数 get_post_parm() 从 request.form 获取名为 age 的表单数据,并返回该数据。
@app.route('/postparm',methods=['POST'])
def get_post_parm():
age = request.form.get('age')
return 'post ajax parm %s'% age
# 该路由使用 render_template('index.html', **data) 渲染一个名为 index.html 的模板文件,并传递一个包含用户信息的字典 data 作为上下文。
# **data 是字典解包语法,它将字典中的键值对作为模板的变量。
@app.route('/enter')
def enter_val():
data = {
'name':'Qianshui',
'age':15,
'love':{
'food':'poteto'
}
}
return render_template('index.html',**data)
if __name__ == '__main__':
app.run(debug=True)