Flask学习记录#1

from flask import Flask
app = Flask(__name__)#创建了一个新的 Flask 应用程序实例,并将其赋值给变量app,name是一个特殊的python变量#
@app.route('/')#定义一个装饰器,告诉flask当访问根目录/时执行什么函数#
def index():#定义一个与根目录/关联的函数index#
    return ("hello world")
@app.route('/flask')#这是访问/flask时的装饰器#
def hello_flask():
    return "hello flask"
if __name__ == "__main__":#启动 Flask 应用程序的标准方式#
    app.run(host='127.0.0.1',debug=True,threaded = True)#运行应用程序,host表示在运行地址,此处为本地服务器ip127,threaded为多线程模式#

引入html模板:

from flask import Flask,render_template
app = Flask(__name__)
@app.route('/')
def index():
    return render_template('首页.html')#返回一个首页.html渲染框架#
if __name__ == "__main__":
    app.run(host='127.0.0.1',debug=True,threaded=True)

Flask动态文件:

from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
    t_int = 129
    t_str = 'curry'
    t_list = [1, 2, 3, 5, 6]
    t_dict = {
        'name': 'Kenny',
        'age': 25
    }#定义各种变量#
    return render_template('index.html', my_int=t_int, my_str=t_str, my_list=t_list, mt_dict=t_dict)#在该函数中定义网页中的变量#
if __name__ == '__main__':
    app.run(debug=True, threaded=True)

HTML文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h2>我是模板</h2>
my_int : {{my_int}}
<br>
my_str : {{my_str}}
<br>
my_dict : {{my_dict}}
<br>
my_list : {{my_list}}
<h2>列表list数据</h2>
<hr>{{my_list[0]}}
<br>
{{my_list.1}}
</hr>
</body>
</html>#输出结果可看到显示的是变量的实际值#

Flask静态文件:

from flask import Flask,render_template,url_for
app = Flask(__name__)
@app.route('/')
def index():
    return render_template('静态测试.html')
if __name__ == "__main__":
    app.run(debug=True,threaded = True)

代码不变,添加了一个url_for模块

静态文件是指css,js,jpg等从外部引入不变的代码,使用url_for(‘函数名xxx’,关键词参数)来生成url。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="{{url_for('static',filename='css/main.css')}}">#通过url_for函数生成引用静态文件的 URL,并将其作为 CSS 文件的链接。Flask 会根据当前应用的配置,将其转换为正确的 URL 地址,这样,无论在什么环境中都可以引用该文件的相对路径,而不是单一的硬路径#
    <title>Title</title>
    {% block head %}{% endblock %}
</head>
<body>
    {% block body %}{% endblock %}
</body>
</html>

父文件base.html通过 url_for 函数生成引用静态文件的 URL,并将其作为 CSS 文件的链接。

{% extends 'base.html'%}#引用base.html的模板#

{% block head %}#定义head开头#
<h2>hehe</h2>
{% endblock %}#head结束#
{% block body %}
<h1>Template</h1>
{% endblock %}

子文件引用自base.html的模板,使用模板继承可以使代码更加简洁和易于维护。在 base.html 中定义常用元素,例如网站的标头、页脚和导航栏等,并为每个页面单独定义内容。在需要修改网站结构时,你只需要修改 base.html 模板即可,无需对每个页面进行修改。

多页面跳转:

from flask import Flask,redirect,url_for
app = Flask(__name__)
@app.route('/admin')#定义一个admin页面#
def hello_admin():
    return 'Hello Admin'
@app.route('/guest/<guest>')#定义一个guest/xxx页面,返回hello xxx as guest#
def hello_guest(guest):
    return 'Hello %s as Guest' % guest
@app.route('/user/<name>')#定义一个user页面#
def hello_user(name):
    if name =='admin':#如果是/user/admin,则返回到admin页面#
        return redirect(url_for('hello_admin'))
    else:
        return redirect(url_for('hello_guest',guest = name))#如果不是,则返回到guest页面,并将name的输入值赋予给guest#
if __name__ == '__main__':
    app.run(debug=True,threaded = True)

redirect函数代表重定向到指定url,url_for负责构建指定函数的url

from flask import Flask,render_template,request
from werkzeug.wrappers.response import ResponseStream
app = Flask(__name__)
@app.route('/')
def student():
    return render_template('index5.html')
@app.route('/result',methods = ['POST','GET'])#methods = ['POST','GET']表示可以处理post和get请求#
def result():
    if request.method == 'POST':
        rst = request.form#检测是否为post,如果是获取内容到rst#
        return render_template("result5.html",result = rst)#模板文件将会使用该参数来展示数据#
if __name__ == '__main__':
    app.run(debug=True,threaded = True)
  • POST 方法:用于向服务器提交数据,通常用于表单的提交。当用户在浏览器中填写表单并点击提交按钮时,会发送一个 POST 请求到服务器,将表单数据作为请求体发送给服务器。在 Flask 中,可以通过 request.form 来获取 POST 请求中的表单数据。

  • GET 方法:用于从服务器获取数据,在浏览器地址栏中输入 URL 或者点击链接时,通常会发送一个 GET 请求到服务器。GET 请求将数据附加在 URL 的查询字符串中,可以通过 request.args 来获取 GET 请求中的参数值。

注册结果html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
  <table border="1">
    {% for key, value in result.items() %}
    <tr>
      <th>{{key}}</th>
      <td>{{value}}</td>
    </tr>
  {% endfor %}
  </table>
</body>
</html>

注册表单html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
  <form action="/result" method="POST">
    <p>Name <input type="text" name = "Name"></p>
    <p>Physics <input type="text" name="Physics"></p>
    <p>Chemistry <input type="text" name="chemistry"></p>
    <p>Maths <input type="text" name="Mathematics"></p>
    <p><input type="submit" value="submit"></p>
  </form>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值