虚拟环境

  1. 使用pipenv创建一个虚拟环境和项目绑定,安装:E:\py\qiyue\flask>python3 -m pip install pipenv
  2. 和项目绑定:到项目的目录中pipenv install ,然后pipenv shell,就进入到了虚拟环境中了,然后就可以安装各种包了,比如pipenv install flask,
  3. 常见的pipenv命令,退出exit,进入pipenv shell,安装pipenv install 包名,卸载pipenv uninstall 包名,查看安装包的依赖关系pipenv graph
  4. 与pycharm绑定,在虚拟环境中pipenv --venv,就会显示一个对应的目录,然后在pycharm中选择环境时绑定一下就可以了,这样运行的就是这个虚拟环境了

flask最小原型与唯一URL原则

  1. flaks的最小原型,此时访问http://127.0.0.1:5000/hello就可以看到return的值了
# -*- coding: utf-8 -*-
from flask import Flask
# 实例化
app = Flask(__name__) @app.route('/hello')
def hello():
return 'hello'
app.run()
  1. 唯一URL原则,此时若用户访问http://127.0.0.1:5000/hello/网址,因为多了一个斜杠,那么这个页面就找不到,若此时@app.route('/hello/')这里多个一个斜杠,就可以访问了,
  2. 但是此时访问不带斜杠的也是可以的,那时因为flask底层做了一次重定向

路由的另一种注册方法

  1. 因为每一次修改完代码还的重启服务器才能看见效果,所以这个时候开启debug模式就可以了,在app.run(debug=True)添加就行了,这样就方便多了
  2. 路由的另一种注册方法,使用app调用add_url_rule()方法就可以了
# -*- coding: utf-8 -*-
from flask import Flask
# 实例化
app = Flask(__name__) def hello():
return 'hello' # 路径,视图函数
app.add_url_rule('/hello',view_func=hello) app.run(debug=True)
  1. 但是通常的情况下还是使用装饰器就可以了

app.run相关参数与flask配置文件

  1. 此时的app.run(debug=True)这个情况下,只有通过127.0.0.1:5000才能访问,即使输入本机ip也不能访问,所以这个时候可以在这个方法中添加参数,此时在地址栏中输入http://192.168.2.14:81/hello也是可以访问的
# host:指定ip地址,输入本机ip也可以访问了,port是改变默认的端口
app.run(host='0.0.0.0',debug=True,port=81)
  1. 若项目上线的话,此时debug模式就不能开启,因为要保持源代码的一致性,所以此时尽量不能删除这个debug,这个时候写一个配置文件,在目录中新建一个config.py
# -*- coding: utf-8 -*-
DEBUG = True
  1. 这个时候在文件中, 先载入这个文件,然后进行读取,注意参数要大写
# -*- coding: utf-8 -*-
from flask import Flask app = Flask(__name__)
# 载入这个配置文件,这里要注意路径,
app.config.from_object('config') @app.route('/hello')
def hello():
return 'hello'
# 读取配置文件中信息
app.run(host='0.0.0.0',debug=app.config['DEBUG'],port=81)

if name 的作用

  1. 有这个判断的话,只有这个文件作为入口文件的情况下,这个run才会执行
if __name__ == '__main__':
app.run(host='0.0.0.0',debug=app.config['DEBUG'],port=81)
  1. 生成环境下通常不会使用flask自带的服务器,而是使用nginx+uwsgi,此时这个文件就不是入口文件了,这个时候uwsgi也是一个服务器,若没有加判断就会同时有两个服务器了,所以这个加上判断是必要的

Response

  1. 视图函数返回的其实就是一个Response,若这样写,此时页面上什么也没有,默认的content-type = text/html
@app.route('/hello')
def hello():
return '<html></html>'
  1. 返回的有这么几个重要的参数status code,content-type,也可以自定义,此时返回的<html></html>,因为使用的文本解析,当然了还可以返回json application/json
from flask import Flask,make_response
@app.route('/hello')
def hello():
# status code 200,404,301,状态码只是一个标识
# content-type http headers,指定了客户端在接收到数据后用什么方式进行解析
# content-type = text/html 默认的
# Response对象
headers = {
'content-type':'text/plain',#文本解析
}
response = make_response('<html></html>',404)
response.headers = headers
return response
  1. 此时还可以进行重定向,只需要把状态码改成301,在headers里添加一个location就可以了,而且还可以写的简洁写,这样就可以了
@app.route('/hello')
def hello():
headers = {
'content-type':'text/plain',
'location':'http://www.bing.com'
}
return '<html></html>',301,headers

Flask-基本原理与核心知识的更多相关文章

  1. 学习python-20191203-Python Flask高级编程开发鱼书_第02章 Flask的基本原理与核心知识

    视频01: 做一个产品时,一定要对自己的产品有一个明确的定位.并可以用一句话来概括自己产品的核心价值或功能. 鱼书网站几个功能 1.选择要赠送的书籍,向他人赠送书籍(价值功能,核心价值的主线): 2. ...

  2. 零基础的学习者应该怎么开始学习呢?Python核心知识学习思维分享

    近几年,Python一路高歌猛进,成为最受欢迎的编程语言之一,受到无数编程工作者的青睐. 据悉,Python已经入驻部分小学生教材,可以预见学习Python将成为一项提高自身职业竞争力的必修课.那么零 ...

  3. 网络基础知识、ASP.NET 核心知识(1)*

    为什么要写网络? 我原本的计划是这样的,连续两天梳理ASP.NET开发的核心知识.说到这呢,有人问了.“不是说好了做ASP.NET笔记吗?为啥要写网络基础知识?是不是傻?” 原因是这样的.作为网站开发 ...

  4. Vuex核心知识(2.0)

    Vuex 是一个专门为 Vue.js 应该程序开发的状态管理模式,它类似于 Redux 应用于 React 项目中,他们都是一种 Flux 架构.相比 Redux,Vuex 更简洁,学习成本更低.希望 ...

  5. Flask快速入门,知识整理

    一.Flask介绍(轻量级的框架,非常快速的就能把程序搭建起来) Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是 ...

  6. Python 编程核心知识体系(REF)

    Python 编程核心知识体系: https://woaielf.github.io/2017/06/13/python3-all/ https://woaielf.github.io/page2/

  7. Cookie详解、ASP.NET核心知识(7)

    无状态的http协议 1.回顾http协议 Http协议是请求响应式的,有请求才有响应,是无状态的,不会记得上次和网页“发生了什么”. 关于http协议的这种特点,黑兔在前面的这三篇博文中进行了详细的 ...

  8. 《Maven实战》关联实际工作的核心知识

    通读了<Maven实战>这本书,由于在实际的工作中,对其有一定的操作上的经验.因此,再回头去通读这本书,就能够更加精准的把握里面的核心知识了. 以下我主要从两点去介绍之—— 1> m ...

  9. Linux(1)- 服务器核心知识、Linux入门、VMware与centeos安装、远程连接linux、linux基本命令使用

    一.服务器核心知识 1.电脑和电脑的硬件组成 现在的人们几乎无时无刻不在使用着电脑!不管是桌上型电脑(桌机).笔记型电脑(笔电).平板电脑,还是智慧型手机等等,这些东西都算是电脑.虽然接触这么多,但是 ...

  10. HTML中DOM核心知识有哪些(带实例超详解)

    HTML中DOM核心知识有哪些(带实例超详解) 一.总结: 1.先取html元素,然后再对他进行操作,取的话可以getElementById等 2.操作的话,可以是innerHtml,value等等 ...

随机推荐

  1. A JAX-WS web service is by itself a Singleton

    http://stackoverflow.com/questions/11096310/singleton-object-in-java-web-service http://stackoverflo ...

  2. [bzoj 1758] 重建计划

    bzoj 1758 重建计划 题意: 给定一棵有边权的树和两个数 \(L, R (L\leq R)\),求一条简单路径,使得这条路径经过的边数在 \(L, R\) 之间且路径经过的边的边权的平均值最大 ...

  3. Mac客户端CentOS服务器 SSH免密码登陆

    假定有2个服务器A(127.0.0.1)和B(192.168.0.1),A作为客户端来登录服务器B 1.在服务器A下使用 ssh-keygen -t ras -P 会在-/.ssh目录下'生成公钥(i ...

  4. Linux之shell命令实现-批量去掉文件名中空格,以及批量修改文件名为数字序号文件名

    1 shell下批量出去文件名中的空格 执行看现象: 上面的是执行for循环以后看到的: 然而源目录下的文件如下: 这样的话想要cat某个具体文件是拿不到的,所以需要去空格处理: 处理方式有很多:如 ...

  5. ECharts3.0介绍、入门

    ECharts 特性介绍 ECharts,一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,S ...

  6. webpack.config.js====插件html-webpack-plugin

    1. 安装 cnpm install html-webpack-plugin --save-dev 2. webpack.config.js中使用 const htmlWebpackPlugin = ...

  7. 【持续更新】MyBatis相关

    MyBatis开发结构 #与$的区别

  8. 解释器模式和php实现

    解释器模式: 给定一个语言, 定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子. 角色: 环境角色:定义解释规则的全局信息. 抽象解释器::定义了部分解释具体实现,封装了 ...

  9. 《移动Web前端高效开发实战》笔记1——静态布局在移动端上的自适应

    1.整体缩放 整体缩放可以用在营销活动页,营销活动可能因为设计美观需求必须使用背景图片而非背景色,因此需要考虑背景图适应屏幕大小.开发者可以用320像素的宽度作为基础宽度(高度可以固定),然后通过计算 ...

  10. hadoop完全分布式模式搭建和hive安装

    简介 Hadoop是用来处理大数据集合的分布式存储计算基础架构.可以使用一种简单的编程模式,通过多台计算机构成的集群,分布式处理大数据集.hadoop作为底层,其生态环境很丰富. hadoop基础包括 ...