程序员学习------python后端flask框架学习

简介: 搭建一个网站,用flask框架是一个很不错的选择,分享一下学习心得

一、flask介绍

1.什么是flask?

  • Flask是一个基于Python并用Python编写的Web应用程序框架
  • flask框架模式:MTV模式

    • M :Models ,模型层,负责数据库建模
    • T :Templates ,模板层,用于处理用户显示的内容,如:html
    • V :Views ,视图层,处理与用户交互的部分内容。处理用户的请求并给出响应

2.flask的两个核心

  1. Werkzeug(路由模块):

    它是一个WSGI工具包,它实现了请求,响应对象和实用函数。这使得能够在其上构建web框架。Flask框架使用Werkzeug作为其基础之一。

  2. jinja2:

    jinja2是Python的一个流行的模板引擎。Web模板系统将模板与特定数据源组合以呈现动态网页。

3.flask与Django的区别

Django 是一个重量级的框架,Flask是一个轻量型的框架;那么Django框架他到底重在哪呢?对比Flask框架,Django原生提供了众多的功能组件,让开发更简便快速。

而Flask 本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login,数据库Flask-SQLAlchemy),都需要用第三方的扩展来实现。比如可以用 Flask 扩展加入ORM、窗体验证工具,文件上传、身份验证等。Flask 没有默认使用的数据库,你可以选择 MySQL,也可以用 NoSQL。flask不会帮你去做选择。

二、使用方法

1.创建flask框架

在pycharm专业版中是可以直接创建的,可以直接新建一个flask项目,编译器会帮你创建好static文件,templates文件和app.py文件。

直接一个完整的flask框架就给你创建好了,我们便可以直接使用了。

2.flask路由

(1).什么是路由(route)?

  • 客户端将请求发送给web服务器,web服务器再将请求发送给flask程序实例
  • 程序实例需要知道每个url请求要运行哪些代码,所以需要建立一个 url 到 python 函数的映射
简单点说就是通过用户访问的路径,匹配相应的函数

(2).路由的使用

基本使用方法:

 @app.route('/')
def hello_world():           
    return '你好!'

@app.route('/index')     #\index 访问路径,用户通过什么方式访问
def hello():
    return "你好!"

单引号中的内容就是我们的访问路径

获取字符串参数的使用:

@app.route('/user/<name>')         #获取参数内容
def welcome(name):
    return "你好!,%s"%name

我们进入网页输入路径后所带的字符串参数,便会输出出来

获取整型参数的使用:

@app.route('/user/<int:id>')         #获取参数内容
def welcome1(id):
    return "你好!,%d 号的会员"%id

同样也是在打开是后边加上整型参数,会在我们网页中显示出现。就不多做演示

3.渲染网页

@app.route('/') 
def index2():
    return render_template("index.html")

我们需要导入一个包

from flask import Flask,render_template

加上我们后边的render_template,就可以使用render_template方法返回渲过后的网页,进行展示

我们会打开一个“index.html“的网站,会显示被渲染后的网站页面

同时我们还可以向页面传递一些变量:

@app.route('/')
def index2():
    time = datetime.date.today()     #普通变量
    name = ["小张","小王","小李"]     #列表类型
    tesk ={"任务":"打扫卫生","时间":"三小时"}  #字典类型

    return render_template("index.html",var = time,list = name,tesk =tesk)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
        今天是{{ var }}欢迎光临。<br>
        今天值班的有:<br>
        {% for data in list %}    <!--用大括号和百分号括起来的是控制结构,还有if-->
            <li>{{ data }}</li>
        {% endfor %}
        任务:<br>               <!--了解一下如何在页面中打印表格,以及如何迭代-->
            <table border="1">
                {% for key,value in tesk.items() %}   <!--tesk.items()) :迭代器,将字典转换成[(key,value),(key,value),(key,value)]格式的列表-->
                <tr>
                    <td>{{key}}</td>
                    <td>{{ value }}</td>
                </tr>
                {% endfor %}
            </table>


</body>
</html>

上边分别是传递普通变量,列表变量和字典变量

在HTML文件中,传递变量是使用{{ }}的方式进行传递的

for循环语句则是:

{% for data in list%}

<内容>

{% endfor%}

#表单提交
@app.route('/test/register')    #路径,test前面需要加上/
def register():
    return render_template("test/register.html")    #当前templates文件夹下边的文件结构

#接收表单的路由需要指定methods为POST
@app.route('/result',methods=['POST'])
def register1():
    if request.method=='POST':
        result = request.form          #将表单里的内容形成一个字典,传给result
        return render_template("test/result.html",result = result)

还可以进行表单提交

当然我们需要建立两个HTML文件,然后在一个中书写表单内容,以及提交跳转链接到的第二个网页中。

需要注意的是,我们默认的请求方式是get,但是我们接收表单的请求方式是post ,所以记得要将其更改为post

同时还有一个注意点:我们跳转的网页一般都不会使用静态的自己输入网址,我们一般是使用反路由:url_for() 自动生成网页。

三、学习心得

通过学习了flask基础用法,同时查阅了许多资料,也通过了一些例子进行实验,了解到我们可以通过将自己的html文件,或者下载的HTML文件,可以导入在我们flask文件中成为模板,然后我们可以通过本地服务器网址打开我们的网页,但是无法让其他人浏览网页。如果配置了服务器的话便可以让其他用户进行访问。

相关文章
|
4月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
343 1
|
4月前
|
Java 数据处理 索引
(Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
DataFrame结构 每一列都属于Series类型,不同列之间数据类型可以不一样,但同一列的值类型必须一致。 DataFrame拥有一个总的 idx记录列,该列记录了每一行的索引 在DataFrame中,若列之间的元素个数不匹配,且使用Series填充时,在DataFrame里空值会显示为NaN;当列之间元素个数不匹配,并且不使用Series填充,会报错。在指定了index 属性显示情况下,会按照index的位置进行排序,默认是 [0,1,2,3,...] 从0索引开始正序排序行。
402 0
|
4月前
|
存储 Java 数据处理
(numpy)Python做数据处理必备框架!(一):认识numpy;从概念层面开始学习ndarray数组:形状、数组转置、数值范围、矩阵...
Numpy是什么? numpy是Python中科学计算的基础包。 它是一个Python库,提供多维数组对象、各种派生对象(例如掩码数组和矩阵)以及用于对数组进行快速操作的各种方法,包括数学、逻辑、形状操作、排序、选择、I/0 、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等等。 Numpy能做什么? numpy的部分功能如下: ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 线性代数、随机数生成以及傅里叶变换功能。 用于集成由C、C++
476 1
|
4月前
|
算法 Java Docker
(Python基础)新时代语言!一起学习Python吧!(三):IF条件判断和match匹配;Python中的循环:for...in、while循环;循环操作关键字;Python函数使用方法
IF 条件判断 使用if语句,对条件进行判断 true则执行代码块缩进语句 false则不执行代码块缩进语句,如果有else 或 elif 则进入相应的规则中执行
619 1
|
5月前
|
安全 Java Ruby
我尝试了所有后端框架 — — 这就是为什么只有 Spring Boot 幸存下来
作者回顾后端开发历程,指出多数框架在生产环境中难堪重负。相比之下,Spring Boot凭借内置安全、稳定扩展、完善生态和企业级支持,成为构建高可用系统的首选,真正经受住了时间与规模的考验。
439 2
|
4月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
592 0
|
4月前
|
Java 数据处理 索引
(numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
ndarray切片 索引从0开始 索引/切片类型 描述/用法 基本索引 通过整数索引直接访问元素。 行/列切片 使用冒号:切片语法选择行或列的子集 连续切片 从起始索引到结束索引按步长切片 使用slice函数 通过slice(start,stop,strp)定义切片规则 布尔索引 通过布尔条件筛选满足条件的元素。支持逻辑运算符 &、|。
293 0
|
7月前
|
机器学习/深度学习 算法 量子技术
GQNN框架:让Python开发者轻松构建量子神经网络
为降低量子神经网络的研发门槛并提升其实用性,本文介绍一个名为GQNN(Generalized Quantum Neural Network)的Python开发框架。
179 4
GQNN框架:让Python开发者轻松构建量子神经网络
|
4月前
|
存储 Java 索引
(Python基础)新时代语言!一起学习Python吧!(二):字符编码由来;Python字符串、字符串格式化;list集合和tuple元组区别
字符编码 我们要清楚,计算机最开始的表达都是由二进制而来 我们要想通过二进制来表示我们熟知的字符看看以下的变化 例如: 1 的二进制编码为 0000 0001 我们通过A这个字符,让其在计算机内部存储(现如今,A 字符在地址通常表示为65) 现在拿A举例: 在计算机内部 A字符,它本身表示为 65这个数,在计算机底层会转为二进制码 也意味着A字符在底层表示为 1000001 通过这样的字符表示进行转换,逐步发展为拥有127个字符的编码存储到计算机中,这个编码表也被称为ASCII编码。 但随时代变迁,ASCII编码逐渐暴露短板,全球有上百种语言,光是ASCII编码并不能够满足需求
238 4

推荐镜像

更多