flask虚拟环境搭建及flask基础

2023-11-06

常用端口号

http 80 https 443 ssh 22 远程访问 ftp 21 文件传输mysql 3306 redis 6379 smtp 25 邮件发送服务 pop3 110 邮件接收服务

虚拟环境

pip是python的包管理工具,下面的操作是软件以后从豆瓣下载 速度快

win永久安装pip的源

首先在window的文件夹窗口输入 :%APPDATA% (注意:要先点击进入c盘在在最上面输入框输入%APPDATA% )
在这里插入图片描述
点击enter进入以下界面:
在这里插入图片描述

然后在空白处右击新建pip文件夹,然后到pip文件夹里面去新建个pip.ini文件,然后再里面输入内容:
[global]
timeout = 6000
index-url = http://pypi.douban.com/simple
trusted-host = pypi.douban.com

然后光标移到计算机(我的电脑)上,右击鼠标,选择高级系统设置—环境变量—系统变量—找到PATH—点击新建—变量名输入框里面输入WORKON_HOME,变量值输入框里面输入pip.ini的绝对路径

在cmd里面输入pip install flask 下载flask

在pycharm里面下载flask_script

为什么需要虚拟环境:

京东 python2 flask1.0 淘宝 python3 flask1.0
到目前位置,我们所有的第三方包安装都是直接通过pip install xx的方式进行安装的,这样安装会将那个包安装到你的系统级的Python环境中。但是这样有一个问题,就是如果你现在用Django 1.10.x写了个网站,然后你的领导跟你说,之前有一个旧项目是用Django 0.9开发的,让你来维护,但是Django 1.10不再兼容Django 0.9的一些语法了。这时候就会碰到一个问题,我如何在我的电脑中同时拥有Django 1.10和Django 0.9两套环境呢?这时候我们就可以通过虚拟环境来解决这个问题。

虚拟环境原理介绍:

虚拟环境相当于一个抽屉,在这个抽屉中安装的任何软件包都不会影响到其他抽屉。并且在项目中,我可以指定这个项目的虚拟环境来配合我的项目。比如我们现在有一个项目是基于Django 1.10.x版本,又有一个项目是基于Django 0.9.x的版本,那么这时候就可以创建两个虚拟环境,在这两个虚拟环境中分别安装Django 1.10.x和Django 0.9.x来适配我们的项目。

安装virtualenv:

virtualenv是用来创建虚拟环境的软件工具,我们可以通过pip或者pip3来安装:

pip install virtualenv
pip3 install virtualenv

创建虚拟环境:

创建虚拟环境非常简单,通过以下命令就可以创建了:

virtualenv [虚拟环境的名字]

如果你当前的Python3/Scripts的查找路径在Python2/Scripts的前面,那么将会使用python3作为这个虚拟环境的解释器。如果python2/Scripts在python3/Scripts前面,那么将会使用Python2来作为这个虚拟环境的解释器。

进入环境:

虚拟环境创建好了以后,那么可以进入到这个虚拟环境中,然后安装一些第三方包,进入虚拟环境在不同的操作系统中有不同的方式,一般分为两种,第一种是Windows,第二种是*nix:

windows进入虚拟环境:进入到虚拟环境的Scripts文件夹中,然后执行activate。

*nix进入虚拟环境:source /path/to/virtualenv/bin/activate
一旦你进入到了这个虚拟环境中,你安装包,卸载包都是在这个虚拟环境中,不会影响到外面的环境。

退出虚拟环境:

退出虚拟环境很简单,通过一个命令就可以完成:deactivate。

创建虚拟环境的时候指定Python解释器:

在电脑的环境变量中,一般是不会去更改一些环境变量的顺序的。也就是说比如你的Python2/Scripts在Python3/Scripts的前面,那么你不会经常去更改他们的位置。但是这时候我确实是想在创建虚拟环境的时候用Python3这个版本,这时候可以通过-p参数来指定具体的Python解释器:

virtualenv -p C:\Python36\python.exe [virutalenv name]

virtualenv 需要进入目录 激活或者退出 这样很麻烦
virtualenvwrapper:

virtualenvwrapper这个软件包可以让我们管理虚拟环境变得更加简单。不用再跑到某个目录下通过virtualenv来创建虚拟环境,并且激活的时候也要跑到具体的目录下去激活。

安装pyenv

sudo apt-get install gcc make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget libc6-dev llvm #安装依赖包

https://github.com/pyenv/pyenv-installer

安装virtualenvwrapper:

*nix:pip install virtualenvwrapper。

windows:pip install virtualenvwrapper-win。

linux安装 virtualenvwrapper

WORKON_HOME
sudo vim ~/.bashrc

export WORKON_HOME=$HOME/.virtualenvs #让所有的虚拟环境 存放到指定的目录下
source /usr/local/bin/virtualenvwrapper.sh #方便找到我们的环境

source ~/.bashrc 让配置文件立即生效

virtualenvwrapper基本使用:

创建虚拟环境:(在cmd里面进行操作)

mkvirtualenv my_env
那么会在你当前用户下创建一个Env的文件夹,然后将这个虚拟环境安装到这个目录下。
如果你电脑中安装了python2和python3,并且两个版本中都安装了virtualenvwrapper,那么将会使用环境变量中第一个出现的Python版本来作为这个虚拟环境的Python解释器。

切换到某个虚拟环境:

workon my_env

退出当前虚拟环境:

deactivate

删除某个虚拟环境:

rmvirtualenv my_env 列出所有虚拟环境:

lsvirtualenv

进入到虚拟环境所在的目录:

首先切换到该虚拟环境

cdvirtualenv

修改mkvirtualenv的默认路径:

在我的电脑->右键->属性->高级系统设置->环境变量->系统变量中添加一个参数WORKON_HOME,将这个参数的值设置为你需要的路径。

创建虚拟环境的时候指定Python版本:

在使用mkvirtualenv的时候,可以指定–python的参数来指定具体的python路径:

mkvirtualenv --python==C:\Python27\python.exe qf_env   #创建python2版本的虚拟环境

linux环境下 创建 python3的虚拟环境

find / -name python3 #假如python3 位于 /usr/local/python3

mkvirtualenv --python=/usr/local/python3 虚拟环境名字

如果有报错安装 sudo apt-get install python3-distutils 再执行上面的步骤
如果 python 显示 3.6. 说明 python3的环境创建成功


pip install flask

c/s b/s

c/s client server 客户端服务器模式 腾讯QQ

b/s browser server 浏览器服务器模式 taobao.com

url http://127.0.0.1:5000

https://www.baidu.com/s?wd=%E8%8B%8D%E8%80%81%E5%B8%88

scheme://host:port/path/?username=123&password=123&query_string=xxx#anchor
scheme:协议的名称

host:主机地址 ip或者域名都可以

port 端口号 系统由0~65535个端口号 其中 0~127 是被占用了 用户自定义端口号 选择 1024以后的 以前的需要root 权限

path http://112.126.60.128:5000/ 首页 http://112.126.60.128:5000/admin/ 管理后台

username=123&password=123&query_string=xxx url get请求的参数 这些参数 服务器会获取到

anchor锚点

MVC MTV

M model 模型 一个表一个模型 == M model 模型 用于跟数据库打交道

V view 视图 也就是 模板 == T template 模板 最终呈现的结果 网页

C controller 控制器 == V 视图 用于接收用户的请求,跟model view 进行交互

web服务器 应用服务器 web框架

web服务器: 负责处理http请求 、响应静态文件 常见的有nginx apache IIS(微软) lighthttpd

应用服务器: 如果处理动态请求 那么 nginx没法实现 需要交给python php等 nginx 不能直接指挥python 那就需要通过 应用服务器 常见的有 uwsgi、tomcat

web框架 : 封装了常用功能 好比是一个毛坯房 我们只需要在此基础上 装修就好了 没必要重复造车

常见的 有 flask django tornado spring3 等

浏览器 跟服务器之间传输的数据类型

Content-type :既可以指定传输的数据类型 又可以指定数据的编码类型

content-type: text/html;charset=utf-8;

Mime-type:不能指定数据的编码类型

mime-type:text/html

常用的数据类型

text/html 默认的 html文件

text/plain 文本

text/css css文件

text/javascript js文件

multipart/form-data 表单 文件提交

application/x-www-form-urlencode 表单普通提交

application/json json传输

application/xml xml传输

ip

公网ip:

内网(局域网)ip :

192.168

172.16

10.0.

本机ip:

127.0.0.1
其他未列出的全部为公网ip

flask 基础

from flask import Flask #导入类库
​
#创建一个实例
​
kangbazi = Flask(__name__)
​
@kangbazi.route('/') #将控制器 或者 试图函数  暴漏出去 方便访问   
def index():
    return '<h1>hello world</h1>'
​
@kangbazi.route('/admin/')
def admin():
    return '<h1>欢迎来到管理后台</h1>'
​
​
#启动实例
​
if __name__ == "__main__":
    kangbazi.run()
​

命令行启动

pip install flask-script #在Terminal下输入命令进行下载


app.py

#导入类库
from flask import Flask
from flask_script import Manager #导入扩展   
#创建一个应用实例  类似于创建一个对象
app = Flask(__name__)
manager  = Manager(app)  #创建一个实例  将app作为参数传递过来 表示  通过manager来管理   
#路由地址
@app.route('/')
​
#视图函数
def hello_world():
    return 'Hello World!99999'
​
#启动
if __name__ == '__main__':
    # app.run()
    manager.run()

用法: 命令行 进入虚拟环境 并进入项目所在的根目录

python app.py  runserver -d -r -p 5005 -h 0.0.0.0 --threaded 

-d 开启debug 模式 能够打印错误  
-r reload 自动加载   
-p 指定端口号  
-h 指定允许访问的ip  0.0.0.0 表示允许所有的ip来访问   
--threaded 表示多线程访问  

指定路由 url类型 所谓的路由就是之 将 视图函数 暴露出去

@app.route('/admin/')
def administer():
    return '江西理工后台管理系统'
​
@app.route('/welcome/<string:name>/')   #http://172.16.42.165:5005/welcome/zhangsan/
def welcome(name):
    return 'hello %s'% name           #hello zhangsan   
​
@app.route('/article/<int:num>/')      #http://172.16.42.165:5005/article/10/
def article(num):
    return '您现在看的是第%s页' % num    #您现在看的是第10页
@app.route('/path/<path:p>')    # http://172.16.42.165:5005/path/a///
def paths(p): 
    return p        # a///   /不再作为分割符来使用了  



string: 默认的数据类型 接受没有任何/的字符串
int:整型
float:浮点型
uuid: 只能是uuid类型 import uuid print(uuid.uuid4()) #c32c6284-2d27-485f-85c1-170977672b1a
path:和string相似 但是可以传/

蓝本 blueprint

不能将所有的url全部放到 一个文件里边 应该是模块单独来放

比如豆瓣 豆瓣都 电影 图书 音乐 可以分三个文件 保存路由地址

book.py

from flask import Blueprint
​
book = Blueprint('book',__name__)
​
@book.route('/')
def index():
    return '图书首页'
​
@book.route('/list/<int:num>/')
def list(num):
    return '图书列表 您当前正在看第%s本书' % num

app.py实例文件

from book import book
app.register_blueprint(book,url_prefix='/book') #前缀 url_prefix
​
​
#http://172.16.42.165:5005/book/
#http://172.16.42.165:5005/book/list/9/

请求对象 request

from flask import request   
@book.route('/req/<int:num>/')
def req(num):
    # return request.url #包含前端所有的请求
    # return request.base_url
    # return request.host_url
    # return request.method  #获取请求的方式  GET POST
    #return request.args['username'] #获取get请求url的参数
    #http://172.16.42.165:5005/book/req/6/?username=jxlg666
    #打印 jxlg666
    # return request.remote_addr #客户端的ip地址
    return request.headers['User-Agent']

常见状态码

2 成功 301 永久重定向 302 临时重定向 4 客户端的问题 5 服务器的问题
200 成功

404 找不到

400 没有权限

403禁止访问

405 请求方法不对 我只能让你get 而且偏偏post

500 肯定是服务器的错误 一般代码有bug

502 某些服务可能没有启动

response

from flask import make_response 
@book.route('/make_response/')
def res():
    # return '请求姿势不对',404
    res = make_response('这是来自构造函数的响应',500)
    return res

redirect 重定向

@book.route('/')
def index():
    if not request.args.get('username'):
        # return redirect('/login/')
        return redirect(url_for('login')) #这个login是方法的名称 而不是路由的名称
    else:
        return '图书首页'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

flask虚拟环境搭建及flask基础 的相关文章

随机推荐

  • 快速浮点开方运算

    二分法 浮点开方也就是给定一个浮点数x 求根号x 这个简单的问题有很多解 我们从最简单最容易想到的二分开始讲起 利用二分进行开平方的思想很简单 就是假定中值为最终解 假定下限为0 上限为x 然后求中值 然后比较中值的平方和x的大小 并根据大
  • FISCO BCOS(二十)——— FISCO BCOS多群组搭建

    1 创建文件夹 创建目录 root wyg virtual machine mkdir fisco 2 创建配置文件 root wyg virtual machine fisco vim ipconf 3 建链 root wyg virtu
  • 【C++】封装的详细介绍

    目录 1 封装的意义 2 struct和class的区别 3 成员属性设置为私有 1 封装的意义 封装是C 面向对象的三大特性之一 封装的意义 1 将属性和行为作为一个整体 表现生活中的事物 2 将属性和行为加以权限控制 public公共权
  • CTFshow-pwn入门-栈溢出pwn49(静态链接pwn-mprotect函数的应用)

    pwn49 首先我们先将pwn文件下载下来 然后赋上可执行权限 再来查看pwn文件的保护信息 chomd x pwn checksec pwn file pwn 我们可以看到这是一个32位的pwn文件 并且保护信息开启了NX和canary
  • idea运行SSM项目及启动(tomcat),详细图解

    1 导入进项目 配置maven 2 配置本地的tomcat 3 选择本地的Tomcat Server 选择Local 点击create 4 tomcat路径配置 名称配置 端口及访问配置 5 项目war包配置生成 进入项目配置 1 进入Ar
  • Vuebnb:一个用vue.js和Laravel构建的全栈应用

    今年我一直在写一本新书叫全栈Vue网站开发 Vue js Vuex和Laravel 它会在Packt出版社在2018年初出版 这本书是围绕着一个案例研究项目 Vuebnb 简单克隆Airbnb 在这篇文章中 我会把它如何工作做一个高层次的概
  • 机器学习 day22(ReLU激活函数,激活函数的种类,如何选择激活函数)

    1 ReLU激活函数 当问题的结果是二元的 则a的范围是 0 1 激活函数g z 可以用sigmoid激活函数 如果问题的结果是无穷多个 如让a的范围取 0 激活函数g z 可以选用ReLU激活函数 他在z 0时取0 在z 0时取z 2 常
  • CDN服务技术架构图

    为什么80 的码农都做不了架构师 gt gt gt 前言 在博文中 解读大型网站的演变过程 浅谈 举家搬迁静态文件到CDN 博文中都有涉及CDN 这次我们来详细讲解下CDN的架构 简介 CDN是构建在网络之上的内容分发网络 依靠部署在各地的
  • linux搭建ftp修改域名访问,linux下构建建设完美FTP服务器

    关键字 ubuntu linux Apache2 PHP5 Pure FTPD pureftpd MySQL5 linux下构建建设完美FTP服务器 可管理 WEB管理 管理界面 一 安装Ubuntu5 Desktop版 来源博客 url
  • 对遗留系统组织重构项目

    很多IT组织都面临一个难题 老系统的维护 升级越来越难做 特别是那些价值高 生命周期长 规模大的核心业务系统 越到后来 要修复一个缺陷或者新增一个功能就需要越大的工作量 这是为什么呢 软 件的质量体现在两方面 商业方面的质量 以及技术方面的
  • 线性链表和顺序表的基本操作

    线性链表和顺序表的基本操作 一 实验目的 线掌握线性表的逻辑特性以及在计算机内的两种存储结构 线性链表和顺序表存储结构下基本操作的实现 会灵活应用线性表结构解决某些实际问题 二 实验内容 1 线性表顺序存储结下的基本操作的实现 初始化 赋值
  • 【2022年研究生科研素养提升系列公益讲座】课程笔记2——一些有用的数据库和科研工具

  • mobx基本使用

    mobx是一个简单可扩展的状态管理库 基本概念 state 状态 状态是驱动应用的数据 像有数据的excel表格 2 derivations 衍生 任何源自状态并且不会再进一步相互作用的东西 比如用户界面 待办事件的数量 把变化发送到服务端
  • c语言利用公式sin x=,用泰勒公式求sin(x)的近似值

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 include include define PI 3 1415927 double FACT double x double fact int n int main int n i k fla
  • java小笔记,List实体类对象的去重

    java小笔记 List实体类对象的去重 去除重复的数据 ArrayList lt 实体类 gt collect orderPOList stream collect Collectors collectingAndThen Collect
  • MySQL中的DDL操作,MySQL中DML操作,MySQL查询数据,SQL函数,MySQL中的索引,MySQL事务,MySQL的用户管理,MySQL分页查询

    目录 MySQL中的DDL操作 一 创建表与删除表 1 创建表 2 查看已创建的表 3 删除表 二 修改表 1 修改表名 2 修改列名 3 修改列类型 4 添加新列 5 删除指定列 三 MySQL的约束 1 修改表添加主键约束 2 删除主键
  • 记录电脑弹垃圾广告的处理方案

    今天电脑突然弹出了垃圾广告 作为一个看不得广告弹窗的人 务必把他扼杀了 他要获取广告信息可能会用到网络 这是一种思路 不同程序运行方式不一样 弹出广告后 打开任务管理器 资源监视器 可以看到有一个可以程序 通过 Wox 查找定位到程序存储路
  • Python 基于pickle的 保存和加载训练后的模型

    pickle允许我们将Python保存为硬盘驱动器上的二进制文件 在pickle我们的对象后 可以结束我们的Python 对话 并在之后将对象在加载到Python中 pickle文件可以备份到云盘或者移动盘里或者拿来想给谁给谁 警告 不要加
  • linux内核的编译和安装

    linux内核的编译和安装 文章目录 linux内核的编译和安装 1 获取内核源码 2 编译源码 3 安装内核 4 reboot 系统加载新的内核 1 获取内核源码 登录Linux内核官方网站 可以获取源代码 使用git获取最新提交到Lin
  • flask虚拟环境搭建及flask基础

    常用端口号 http 80 https 443 ssh 22 远程访问 ftp 21 文件传输mysql 3306 redis 6379 smtp 25 邮件发送服务 pop3 110 邮件接收服务 虚拟环境 pip是python的包管理工