Python Flask Web框架初步入门

本文介绍了FlaskWeb开发的基本概念,包括URL路由的定义、模板渲染技术、请求参数获取、响应操作(如重定向和JSON序列化),以及如何设置多域名和处理静态资源。通过实例展示了如何使用Flask搭建简单的Web应用和处理用户界面交互。
摘要由CSDN通过智能技术生成
* 用于定义 URL 规则和请求方法的映射关系,指定了响应请求的处理函数。
  1. render_template(template_name_or_list, **context)

    • 用于渲染模板文件,并传递上下文变量到模板中进行渲染。
  2. request.args

    • 获取请求 URL 中的查询参数。
  3. request.form

    • 获取 POST 请求发送的表单数据。
  4. request.files

    • 获取上传的文件数据。
  5. session

    • 用于存储用户会话信息,可以在不同请求之间共享数据。
  6. redirect(location, code=302)

    • 重定向到指定的 URL。
  7. url_for(endpoint, **values)

    • 生成指定端点对应的 URL。
  8. jsonify(*args, **kwargs)

    • 将传入的数据序列化为 JSON 格式,并创建包含 JSON 数据的 Response 对象。
  9. make_response(*args)

    • 创建一个自定义的响应对象,可以设置 HTTP 状态码、头部信息等。
  10. abort(status_code)

    • 中止请求并返回指定的 HTTP 状态码。
flask基础
搭建flask服务器
from flask import Flask

webapp = Flask(__name__)

if __name__ == '__main__':
    webapp.run(port=8080, host='127.0.0.1', debug=True)

导入 Flask 模块,用于创建 Web 应用程序

创建了一个名为 webapp 的 Flask 应用实例

启动 Flask 应用程序,监听本地主机的 127.0.0.1 地址的 8080 端口,设置 debug 模式为 True,出现错误时后台显示调试信息

截图显示有一个 GET 请求尝试访问根路径 /,但是返回了 404 错误,表明应用中没有处理根路径的路由

所以要添加url路由,观察如下代码:


from flask import Flask

webapp = Flask(__name__)

@webapp.route('/')
def index():
    return "这是一个测试页面"

if __name__ == '__main__':
    webapp.run(port=8080, host='127.0.0.1', debug=True)

使用装饰器 @webapp.route('/') 调用route路由,括号里给定参数,/符号默认为首页

当路由定位到这个默认的页面时,就调用这个index函数的返回内容。

所以访问127.0.0.1:8080时,实际上默认访问的是127.0.0.1:8080/    这个/  就根据路由走到了index函数

返回一个正常的页面了

正常来说访问一个页面的时候,返回的是html的精美页面,那么如何实现呢?

定义html
使用templates模板定义页面的html

在当前项目中新建目录:templates

html页面编写
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>我的网页</title>
</head>
<body>

<h1>欢迎来到我的网页!</h1>
<p>这是一个简单的 HTML 示例。</p>

</body>
</html>
from flask import Flask
from flask import render_template

webapp = Flask(__name__)

@webapp.route('/')
def index():
    return render_template('index.html')

if __name__ == '__main__':
    webapp.run(port=8080, host='127.0.0.1', debug=True)

导入render_template方法

调用该方法指定 index.html

因为flask框架在使用这个模板函数时,默认去寻找项目文件夹下的templates文件夹里的html文件

render_template传参变量

如果想通过render_template方法传输数据,在html文件中显示出来,需要在render_template函数中加入数据参数,如data=msg

html编写格式:{{变量}}

from flask import Flask
from flask import render_template

webapp = Flask(__name__)

@webapp.route('/')
def index():
    msg = "Welcome"
    return render_template('index.html', data=msg)

if __name__ == '__main__':
    webapp.run(port=8080, host='127.0.0.1', debug=True)

加了变量msg,render_template方法中制定了data数据

html编写加上{{data}},调用变量内容

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>我的网页</title>
</head>
<body>

<h1>欢迎来到我的网页!</h1>
<p>这是一个简单的 HTML 示例。</p>
{{data}}   # 显示传递变量的内容  Welcome
</body>
</html>

定义图片

如果想在该页面添加图片或者css、js文件,就需要使用到flask框架默认设置的static目录方式,即将这些图片、css、js文件存放到项目目录下的static目录,然后使用路由指向。

创建static目录,存入图片

html编写

添加如下代码:

 <img src="{{ url_for('static', filename='风景.webp') }}" alt="风景图片">
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>网页标题</title>
</head>
<body>
    <h1>欢迎来到我的网页!</h1>
    <img src="{{ url_for('static', filename='风景.webp') }}" alt="风景图片">
    <p>这是一个简单的 HTML 示例。</p>

    {{data}}
</body>
</html>

url_for函数用于生成静态文件的 URL,将定义的静态文件显示到页面上

flask入门
网站多域名
from flask import Flask
from flask import render_template

webapp = Flask(__name__)


@webapp.route('/')
def index():
    return render_template('index.html')


@webapp.route('/login')
def login():
    return render_template('login.html')


if __name__ == '__main__':
    webapp.run(port=8080, host='127.0.0.1', debug=True)

再main文件里定义多个url路由

访问网址 127.0.0.1/login后,调用login.html

用户登陆的login.html

<!DOCTYPE html>
<html>
<head>
    <title>User Login</title>
</head>
<body>
    <h2>User Login</h2>
    <form action="/login" method="post">
        <div>
            <label for="username">Username:</label>
            <input type="text" id="username" name="username">
        </div>
        <div>
            <label for="password">Password:</label>
            <input type="password" id="password" name="password">
        </div>
        <div>
            <input type="submit" value="Login">
        </div>
    </form>
</body>
</html>

访问127.0.0.1/login:

网站之间超链接跳转

访问默认网址,网页显示一个可点击的链接可跳转到其他界面,可以使用a超链接实现使用url_for函数

from flask import Flask
from flask import render_template

webapp = Flask(__name__)


@webapp.route('/')
def index():
    return render_template('index.html')

@webapp.route('/info')
def info():
    return render_template('info.html')

if __name__ == '__main__':
    webapp.run(port=8080, host='127.0.0.1', debug=True)

index.html编写加入a超链接

<ul>
    <li><a href="/info">去看相关介绍说明</a></li>
</ul>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>网页标题</title>
</head>
<body>
    <h1>欢迎来到我的网页!</h1>
    <img src="{{ url_for('static', filename='风景.webp') }}" alt="风景图片">
    <p>这是一个简单的 HTML 示例。</p>
    {{data}}
<ul>
    <li><a href="/info">去看相关介绍说明</a></li>
</ul>
</body>
</html>

点击**“去看相关介绍说明”则跳转到/info****这个界面**

info.html

<!DOCTYPE html>
<html>
<head>
    <title>Flask常用方法介绍</title>
</head>
<body>
    <p><strong>route(rule, methods=['GET']):</strong> 用于定义 URL 规则和请求方法的映射关系,指定了响应请求的处理函数。</p>
    <p><strong>render_template(template_name_or_list, **context):</strong> 用于渲染模板文件,并传递上下文变量到模板中进行渲染。</p>
    <p><strong>request.args:</strong> 获取请求 URL 中的查询参数。</p>
    <p><strong>request.form:</strong> 获取 POST 请求发送的表单数据。</p>
    <p><strong>request.files:</strong> 获取上传的文件数据。</p>
    <p><strong>session:</strong> 用于存储用户会话信息,可以在不同请求之间共享数据。</p>
    <p><strong>redirect(location, code=302):</strong> 重定向到指定的 URL。</p>
    <p><strong>url_for(endpoint, **values):</strong> 生成指定端点对应的 URL。</p>
    <p><strong>jsonify(*args, **kwargs):</strong> 将传入的数据序列化为 JSON 格式,并创建包含 JSON 数据的 Response 对象。</p>
    <p><strong>make_response(*args):</strong> 创建一个自定义的响应对象,可以设置 HTTP 状态码、头部信息等。</p>
    <p><strong>abort(status_code):</strong> 中止请求并返回指定的 HTTP 状态码。</p>
</body>
</html>

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)

img-jVZNBNxl-1713604171274)]

[外链图片转存中…(img-mSYbUMpU-1713604171275)]

[外链图片转存中…(img-GpULJ2Fj-1713604171275)]

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)

  • 23
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值