因为扫描器的准备使用Flask框架,所以开始恶补Flask和前后端的知识

Flask是一个使用Python编写的轻量级Web应用框架,作者是 Armin Ronacher(他也是 Werkzeug 及 Jinja2 的作者。)。本来只是作者的一个愚人节玩笑,不过后来大受欢迎,进而成为一个正式的项目。

我们使用pip来安装flask

pip install flask

  因为我python2和python3共存,所以这里我是pip3 install flask,都差不多

因为flask的版本更新迭代比较快,可能会有两个项目分别基于不同的flask版本开发的,如果想要两个项目都能正常运行,可以使用python的虚拟环境来解决这个问题。

暂时我还没有遇到这个问题,所以没有使用虚拟环境。

第一个Flask程序

from flask import Flask

app=Flask(__name__)

@app.route('/')
def hello_world():
return "hello world!" if __name__=='__main__':
app.run()  

这里的

from flask import Flask

  是从flask框架中导入Flask这个类

接着我们需要初始化一个Flask对象,即初始化为app。

传递__name__参数的好处有:

  1,方便flask框架去寻找资源

  2,方便flask插件比如Flask-Sqlalchemy出现错误的时候,好去寻找问题所在的位置

@app.route是一个装饰器,以@开头,并且在函数的上面,作用是做一个url与视图函数的映射

比如说在上面的第一个flask代码里面,hello_world就是这个视图函数,因为是@app.route('/'),所以url代表的就是127.0.0.1:5000/

app.run()即启动一个应用服务器,一直监听本地的5000端口,来接收用户的请求。

这时候因为默认是127.0.0.1:5000开启服务,我们访问一下,可以看到页面上已经输出了hello world!

但是如果我们修改return 的值时,比如:

@app.route('/')
def hello_world():
return "baidu.com"

  刷新127.0.0.1:5000页面,显示的还是之前的hello world!

也就是说我们修改的文件并没有即时地反馈在网页上,需要我们重启服务才可以生效

这里需要引入的就是debug模式,我们开启debug模式:

if __name__=='__main__':
app.run(debug=True)

  这时候在代码里面进行修改并保存了之后,在debug模式为True的情况下,不需要重启服务,在检测到代码被修改之后,应用服务器就会自动重启服务,方便我们进行调试,除此之外,在代码中出错,debug模式下也会将相应的错误信息显示在网页上,在我们开发的过程中很方便,但服务上线了之后就应当将debug服务关闭,避免详细的错误信息暴露服务器的配置情况。

更好的方式是我们将debug=True写在配置文件中,新建config.py,在里面写入

DEBUG=True

  同时在主app文件中导入这个文件,并且配置到Flask实例化对象app中

import config
app.config.from_object(config)

  另外后面我们用到很多参数,也都可以放在config.py文件中统一配置,比如SECRET_KEY和SQLALCHEMY等等。

在网页的浏览中,我们常常会传入参数对网页进行访问,比如/page/1,是网站文章的第一页,/page/2/,是网站文章的第二页,修改/page/后面的数字,访问到网站不同的页面,就需要用到url传参。

参数的作用已经很明显了,可以在相同的url,指定不同的参数来加载不同的数据

使用参数的方法:

@app.route('/page/<id>')
def page(id):
return "你访问的参数是"+id

  

很多时候我们会用到反转URL,反转URL即从视图函数到url的转换,其作用是:

  1,在页面重定向的时候,会使用url反转

  2,在模板中,也会使用url反转

比如说我们在登录了网站之后,网站会自动重定向我们到网站的主页,就会使用到url反转,使用方法:

首先需要导入url_for

from flask import url_for

  然后使用url_for函数,就能够获取到视图函数所对应的url

@app.route('/page/')
def page():
return url_for('page')

  这里可以看到页面上返回了/page/即访问的page函数的url

获取到了反转之后的url,我们就会想到重定向到该url。

我们需要导入redirect和url_for

from flask import url_for
from flask import redirect

  我们这里令其访问/的时候跳转到登录界面

@app.route('/')
def hello_world():
login_url=url_for('login')
return redirect(login_url)
return "google.com"

  先使用url_for函数将视图函数反转成url,然后使用redirect重定向到该url去

Flask学习 url和视图的更多相关文章

  1. flask之URL和视图(一)

    1.Flask URL和视图 1.1.第一个flask程序 from flask import Flask #创建一个Flask对象,传递__name__参数进去 app = Flask(__name ...

  2. 【Python】Flask系列-URL和视图笔记

    1.学习目标 熟悉Flask相关知识. 熟悉web开发流程. 能独立开发Flask项目. 2.环境配置 Python虚拟环境安装 因为python的框架更新迭代太快了,有时候需要在电脑上存在一个框架的 ...

  3. 1.Flask URL和视图

    1.1.第一个flask程序 from flask import Flask #创建一个Flask对象,传递__name__参数进去 app = Flask(__name__) #url与视图映射 @ ...

  4. flask第七篇——URL与视图函数的映射

    有兴趣的朋友可以添加微信公众号:自动化测试实战 今天开始就要进入正题了.大家都准备好了吧~ 代码提示 先和大家说个小知识点:有同学后台说输入flask代码pycharm不提示,现在告诉你一个解决方法: ...

  5. Python学习笔记整理总结【Django】【MVC/MTV/路由分配系统(URL)/视图函数 (views)/表单交互】

     一.Web框架概述  Web框架本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. #!/usr/bin/env python # -*- coding:utf-8 ...

  6. Django学习笔记之URL与视图

    视图 视图一般都写在app的views.py中.并且视图的第一个参数永远都是request(一个HttpRequest)对象.这个对象存储了这个http请求的所有信息,其中包括携带的参数以及一些头部信 ...

  7. Python Flask学习笔记之Hello World

    Python Flask学习笔记之Hello World 安装virtualenv,配置Flask开发环境 virtualenv 虚拟环境是Python解释器的一个私有副本,在这个环境中可以安装私有包 ...

  8. Flask 学习篇二:学习Flask过程中的记录

    Flask学习笔记: GitHub上面的Flask实践项目 https://github.com/SilentCC/FlaskWeb 1.Application and Request Context ...

  9. python flask学习(3)

    这次主要学习web表单.学了下,很像是Django的form表单验证.不过有许多的不同.可以说是功能更加碎块化.Django的验证方式是很固定和严谨的,风格完全不同. 尽管Flask的请求对象提供的对 ...

随机推荐

  1. Activit的心路历程:获取当前节点的下一节点【可能存在多个】的nodeId

    上一任务节点 在我的开发任务中,突然给我提出了一个待办任务需要获取当前任务节点下一任务节点的表单信息,刚开始搞得我有点措手不及,后来仔细是靠后,灵感一下,直接操作流程的bpmn信息就可以获取到节点信息 ...

  2. spring源码概览

    阅读spring源码需要具备的基本技能: 1,设计模式(工厂模式,单例模式,代理模式,模板模式,观察者模式,装饰器模式,适配器模式) 2,数据结构和算法(栈,队列,树以及一些基本的算法) 3,反射(如 ...

  3. git 分支合并到master

    [参考:] https://segmentfault.com/q/1010000000181403  我们一般这样:远程创建一个主分支,本地每人创建功能分支,日常工作流程如下: # 去自己的工作分支 ...

  4. spring中的事务有两种方式

    1种是我们常用的声明式事务,如注解,或者配置文件配置的. 2种是编程式事务,如 TransactionTemplate 类的使用.

  5. 磁盘构造/msdos分区(fdisk)格式化(mkfs)和挂载

    分区不是必要的,分区是与系统盘分开,防止数据丢失. 磁盘使用流程:查看磁盘(fdisk -l)---分区---格式化(创建文件系统)----挂载(自动挂载) 分区表类型:msdos(一般是系统分区)  ...

  6. logback怎么写?分类输出日志到不同的文件

    此appender有顺序,最好不要乱调顺序,输出日志如下: drwxr-xr-x 2 root root 4096 Dec 3 00:00 2019-12-02drwxr-xr-x 2 root ro ...

  7. bluestore对象挂载到系统进行提取

    前言 之前在filestore里面,pg是直接暴露到文件系统的,也就是可以直接进去查看或者拷贝,在极端情况下,多个osd无法启动,pg无法导出的时候,那么对pg内部对象的操作处理,是可以作为最后恢复数 ...

  8. [C/C++]详解结构体

    引子 设计程序时,最重要的步骤之一就是选择表示数据的方法.在许多情况下,简单变量甚至是数组还不够.为此,C提供了结构变量(structure variable)提高表示数据的能力,它能够创造新的形式. ...

  9. 宕机了,Redis数据丢了怎么办?

    持续原创输出,点击上方蓝字关注我 目录 前言 什么是AOF? 三种写回策略 日志文件太大怎么办? AOF重写会阻塞主线程吗? AOF的缺点 总结 什么是RDB? 给哪些数据做快照? 快照时能够修改数据 ...

  10. day96:flask:flask-migrate&flask-session&蓝图Blueprint&蓝图的运行机制

    目录 1.flask-migrate 2.flask-session 3.蓝图:Blueprint 4.蓝图的运行机制 1.数据库迁移:flask-migrate 1.Flask的数据库迁移 在开发过 ...