Flask第一天----快速上手

前言

这一篇博客是开个头,讲一些相关的基础知识以及举一些小例子为之后框架各个部分的详细介绍做个引导。至于环境怎么安装配置,虚拟环境怎么搭建相关的问题可以去搜索其他博客,我在这里就不过多赘述了。

下面是我这个专栏打算写的一些内容
在这里插入图片描述

现在开始

首先根据上面的图,第一篇我要讲的是简单的基础部分
在这里插入图片描述

1.关于Flask

Flask框架是一个用python编写的轻量级web应用框架,也就是用来支持动态网站、网络应用程序和网络服务开发的。框架的好处是什么呢?大部分web开发中共同的功能都已经帮我们实现了,我们在自己开发的时候只需要去使用框架所提供的方法就好。还有许多python编写的其他web框架,比如Django、Tornado……但是为什么我会先选择来写关于Flask,因为我看中了它的 轻量 。什么意思呢,拿Django作为对比,两者是截然不同的,Django把各种功能都包含在了里面,导致很笨重(往往有些用不上的),而Flask则只包含了核心的功能。而对于Tornado呢,它有很好的异步处理能力,也就是高性能,但是它不是基于WSGI协议,而是基于http server,这一部分之后讲处理表单提到werkzeug这一块会更具体的讲一下。

想自学Flask的话呢也有很多书籍:狼书、狗书……前者偏实战一点,后者我个人觉得讲的没有那么好,看久了反而还会有些无聊导致看不下去。有需要的话可以去网上搜索找找pdf

2.Flask的hello world

首先所有Flask程序必须要先有一个实例对象,也就是实例化Flask类,一般用app命名。

from flask import Flask
app=Flask(__name__)

我们也可以去看一下Flask类的源码
在这里插入图片描述
仔细看看这段注释,你不仅会发现普通情况下的实例方法,下面还有在文件夹下的处理实例化的其他方法,通常情况下__name__就是__main__

然后再用route()装饰器去指定通过什么样的url来访问下面的函数,也就是把url与对应的函数形成映射关系,这种关系就是路由。那我们现在就简单的输出一行hello world

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

这里我写的hello_world()函数其实就是一个视图函数,之后我们会具体讲视图函数的,现在只要知道视图函数必须要有返回值,可以是字符串,也可以是html页面等等。
最后就是启动web服务啦

if __name__ == '__main__':
    app.run(debug=True,host='localhost',port=8888)

在主函数中,用app.run()启动服务,中间可以没参数,也可以根据自己的需要添加上参数。比如debug=True,就是设置为调试模型,程序出错会在控制台输出错误信息;port是指定端口号,默认是5000,但是万一本机端口已经被占用就需要更换一个端口,这个时候就需要指定port。

完整的代码及运行效果

from flask import Flask

app=Flask(__name__)

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

if __name__ == '__main__':
    app.run(debug=True,host='localhost',port=8888)

在这里插入图片描述
仅仅7行代码就实现了一个简单的web服务,是不是很简单。

3.url传参、反转以及页面的跳转重定向

Flask中想要传递一个参数或者变量,一般使用表单或者url传递。表单我们会在数据交互之中去具体讲,今天先看看url传参

语法:
url传参的语法是在route()装饰器中设置’/<需要传的参数>/’,当然下面的视图函数中的参数名要与这里传入的参数名一致。
举个例子看一下

from flask import Flask

app=Flask(__name__)

@app.route('/')
def hello_world():
    return '这是url传参演示'

@app.route('/user/<name>')
def list_user(name):
    return "接收到的名字为:{}".format(name)

if __name__ == '__main__':
    app.run(debug=True,host='localhost',port=8888)

在这里插入图片描述
在这里插入图片描述

了解了传参之后我们就可以来看看url反转从而实现页面的跳转与重定向。什么意思呢,我可以举个简单的常见例子,比如有些网站你打开它的主页,之后他会自动跳转到登陆界面,这就是页面的跳转,其中就要用到重定向。

先来看看url反转
当我们重定向的时候需要使用到视图函数中定义的url,那我们就必须根据视图函数的名称得到所指向的url,这就是url反转。(其实就是映射关系作用的体现)可能一开始听比较懵,来看个例子吧

from flask import Flask,url_for

app=Flask(__name__)

@app.route('/')
def index():
    url1=(url_for('news',id='10086'))
    return "URL反转的内容为:%s"%url1

@app.route('/news/<id>')
def news(id):
    return "请求的参数是为:{}".format(id)

if __name__ == '__main__':
    app.run(debug=True,host='localhost',port=8888)

在这里插入图片描述
在这里插入图片描述
来分析一下这段代码,首先我们定义了两个视图函数index和news,然后我们在news中返回的是url中的参数id。现在我们想在index就设置好id的值,那我们就需要用url_for函数进行url反转。url_for的参数首先就是你要设置的视图函数,然后后面的参数随情况而定。

这一部分实现之后就可以来看看页面跳转了
我们如何设置才能让一开始打开的网页不是index而是其他网页,比如login呢。首先就要介绍一下redirect()重定向函数,它的功能很简单,就是跳转到指定的url,现在实现起来就很简单啦

from flask import Flask,url_for,redirect

app=Flask(__name__)

@app.route('/')
def index():
    print("首先访问index()视图函数")
    url1=(url_for('user_login'))
    return redirect(url1)

@app.route('/user_login')
def user_login():
    return "这是用户首页,需要先登录!"

if __name__ == '__main__':
    app.run(debug=True,host='localhost',port=8888)

分析:我们首先在index视图函数中定义了url1,url1的结果就是user_login视图函数反转所对应的url:’/user_login’,然后我们使用redirect去重定向到url1从而实现页面跳转。
在这里插入图片描述
这样一开始我们看到的就不是index而是user_login。

总结

这是第一篇,总体来说框架的主要内容像路由、视图、重定向……都讲了(除了数据库那一块),然后下一篇关于Jinja2模板引擎的内容需要一丢丢html知识,剩下的大多就是学会并记住Jinja2的模板渲染机制,下一次更新应该会等上一段时间。

发布了85 篇原创文章 · 获赞 55 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/shelgi/article/details/104409565