回顾:

1.安装pipenv虚拟运行环境,隔离项目 (启动:pipenv shell)

2.安装flask(pipenv install shell),查看项目依赖(pipenv graph)

3.查看项目名虚拟环境安装目录:pipenv --venv

项目编写:

1.最小的原型:

from flask import Flask

app = Flask('__name__')

app.run()

2.视图函数:路由(route修饰器)注册 + 函数

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

3.开启调试模式:

app.run(debug=True)

4.路由另一种注册方式:

上一中使用了修饰器

通过flask核心对象注册:

app.add_url_rule('/hello', view_func=hello)

两个参数:URL和视图函数

5.接受外网访问和端口

app.run(host='0.0.0.0', port=80)

6.配置文件:当项目发布到生产环境是debug要关闭,开发环境和生产环境要是镜像关系(一模一样),方法是使用配置文件

创建:config.py:

DEBUG = True

导入配置文件:

1.当做模块导入:from config import DEBUG

2.app方法导入:app.config.from_object('config') # 导入载入配置文件 参数为模块路径

(# 如果通过from_object方式载入配置文件,要求参数全大写!# DEBUG默认值为False,所以要覆盖config中的参数,DEBUG也必须大写)

读取配置文件:

app.run(host='0.0.0.0', debug=app.config['DEBUG'])

7.if判断:

在项目中Fisher文件是入口文件,其中app.run()只能在入口文件中执行其他模块(即使入口文件被导入)不允许执行,就需要if加以限制

if __name__ == '__main__': #确保if里面的语句只在入口文件里执行
#保证在生产环境中(nginx + uwsgi)不会再一次启动web服务器,因为uwsgi已经启动了服务器

8.Response:

视图函数除了返回字符串还会返回:

1.status状态码  2.content type(在http header标签中):告诉接受方如何解析文本,不修改默认为text/html

Flask会把视图函数返回的字符串当做主体内容,把status和content type等一起封装为一个Response对象

创建Response对象:response = make_response()

9.第一个API:图书搜索 q:关键字

@app.route('/book/search/<q>/<page>')
def search(q, page):
isbn_or_key = 'key' # 默认设为key
if len(q) == 13 and q.isdigit: # 字符串isdigit()方法判断是否全为数字
isbn_or_key = 'isbn'
short_q = q.replace('_', '')
if '_' in q and len(short_q) == 10 and short_q.isdigit:
isbn_or_key = 'isbn'
pass

把上述判断代码封装为一个模块(helper.py)关键字处理

def is_isbn_or_key(word):
"""
word:普通关键字搜索
page
"""
isbn_or_key = 'key' # 默认设为key
if len(word) == 13 and word.isdigit: # 字符串isdigit()方法判断是否全为数字
isbn_or_key = 'isbn'
short_word = word.replace('_', '')
if '_' in word and len(short_word) == 10 and short_word.isdigit:
isbn_or_key = 'isbn'
return isbn_or_key

在Fisher函数中调用:在视图函数中逻辑判断代码最好封装

from flask import Flask
from helper import is_isbn_or_key
from config import DEBUG
app = Flask(__name__) @app.route('/hello')
def hello():
return 'Hello!' @app.route('/book/search/<q>/<page>')
def search(q, page):
isbn_or_key = is_isbn_or_key(q)
pass
# app.add_url_rule('/hello', view_func=hello) app.run(debug=True)

10.访问API:

发送http请求,在文件中封装(http.py):

发送http请求有两种方法:

1. urllib: 自带的模块

2.requests 第三方库处理http请求:

安装requests:1.启动环境pipenv shell  2.安装:pipenv install requests

http.py  : 发送请求并接受结果(json)

import requests

class HTTP:
@staticmethod #静态修饰器
def get(url, return_json=True):
r = requests.get(url)
if r.status_code != 200:
return {} if return_json else ''
return r.json() if return_json else r.text
为简化的代码:
# if r.status_code == 200:
# if return_json:
# return r.json()
# else:
# return r.text
# else:
# if return_json:
# return {}
# else:
# return ''

把请求的过程封装为一个类(yushu_book.py):

from http import HTTP
class YuShuBook:
isbn_url = 'http://t.yushu.im/v2/book/isbn/{}'
keyword_url = 'http://t.yushu.im/v2/book/search?q={}&count={}&start={}' @classmethod
def search_by_isbn(cls, isbn):
url = cls.isbn_url.format(isbn)
result = HTTP.get(url)
return result
@classmethod
def search_by_keyword(cls, keyword, count=15, start=0):
url = cls.keyword_url.format(keyword, count, start)
result = HTTP.get(url)
return result

  

DAY2-Flask项目的更多相关文章

  1. flask 项目的开发经验总结

    已经开发了几个flask项目, 是时候总结一下了, 这里涉及到项目源码的组织, 常用的包, 源码示例. =========================需要的 python 包有:========= ...

  2. Python框架 Flask 项目实战教程

    本文目的是为了完成一个项目用到的flask基本知识,例子会逐渐加深.最好对着源码,一步一步走.下载源码,运行pip install -r requirements.txt 建立环境python db_ ...

  3. 通过VM虚拟机安装Ubuntu server部署flask项目

    1. VM安装Ubuntu server 14.04,系统安装完成后,首先安装pip工具方便之后的包安装,此处需先使用 apt-get install update,apt-get install u ...

  4. flask项目开发中,遇到http 413错误

    在flask项目中,上传文件时后台报http 413 Request Entity Too Large 请求体太大错误! 解决的2种方法: 1.在flask配置中设置 MAX_CONTENT_LENG ...

  5. flask项目部署到阿里云 ubuntu16.04

    title: flask项目部署到阿里云 ubuntu16.04 date: 2018.3.6 项目地址: 我的博客 部署思路参考: Flask Web开发>的个人部署版本,包含学习笔记. 开始 ...

  6. 部署Flask项目到腾讯云服务器CentOS7

    部署Flask项目到腾讯云服务器CentOS7 安装git yum install git 安装依赖包 支持SSL传输协议 解压功能 C语言解析XML文档的 安装gdbm数据库 实现自动补全功能 sq ...

  7. pycharm创建Flask项目,jinja自动补全,flask智能提示

    pycharm创建Flask项目,jinja自动补全,flask智能提示 之前一直都是用在idea里创建空项目然后导入,之后就没有各种的智能提示,在选择文类,选择模板之类的地方就会很麻烦. 步骤1:用 ...

  8. flask 项目基本框架的搭建

    综合案例:学生成绩管理项目搭建 一 新建项目目录students,并创建虚拟环境 mkvirtualenv students 二 安装开发中使用的依赖模块 pip install flask==0.1 ...

  9. windows环境隐藏命令行窗口运行Flask项目

    Linux下可以使用nohub来使Flask项目在后台运行,而windows环境下没有nohub命令,如何让Flask项目在windows中在后台运行而不显示命令行窗口呢? 1.写一个.bat脚本来启 ...

  10. nginx + gunicorn + flask项目发布

    程序安装(linux mint) gunicorn安装:pip install gunicorn nginx安装:sudo apt-get install nginx 配置 nginx默认配置信息在/ ...

随机推荐

  1. PS入门到精通完全自学教程

    ps视频教程,ps自学视频教程.ps免费视频教程下载,PS入门到精通完全自学教程视频内容较大,分为俩部分: PS入门到精通完全自学教程-第一部分(带swf播放器):百度网盘,https://pan.b ...

  2. PHP 用户密码加密函数password_hash

    传统的用户名和密码都采用加盐的方式存储加密信息,盐值也需要存储. 自PHP5.5.0之后,新增加了密码散列算法函数(password_hash),password_hash() 使用足够强度的单向散列 ...

  3. int str input的运用

  4. 网格系统-bootStrap4常用CSS笔记

    .row 定义一行 .col 均分列数,最多一行12列.每列左右间隙各15px .col-{1到12} 定义在所有屏幕下的列宽 .col-{sm|md|lg|xl}-{1到12} 定义在指定屏幕下该列 ...

  5. Hyperledger Fabric CA User’s Guide——配置设置(四)

    配置设置 Fabric CA提供了三种方案去配置Fabric CA服务端和客户端,优先顺序是: CLI flags(标识) 环境变量 配置文件 在本文档的其余部分中,我们将对配置文件进行更改.但是,可 ...

  6. Solidity 神器Remix

    1 功能 这里我们使用在线编译器,打开网址 https://ethereum.github.io/browser-solidity 1.1 文件夹管理 最左边是文件夹管理,里面列出了当前工作区里的文件 ...

  7. Daily Scrum (2015/10/25)

    今天终于到了周末的尾声,我们的组员也应该正常得投入到工作中了.这天晚上我(符美潇)和PM(潘礼鹏)和两个DEV开了一个小会,讨论一下我们本周的代码编写工作.我们了解到大家的代码阅读工作和相关知识的学习 ...

  8. 实验五Java网络编程及安全

    实验五 Java网络编程及安全 结对伙伴:20135231林涵锦(负责服务器方)http://www.cnblogs.com/20135213lhj/  实验目的与要求: 1.掌握Java网络编程的方 ...

  9. 剑指offer :从尾到头打印链表

    题目描述: 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 解题思路: 链表的遍历只能从头向尾进行,要从尾到头输出,考虑用栈.先从头到尾遍历一次链表,同时将值进栈,再清空栈,同时将值 ...

  10. Codeforces Round #196 (Div. 2) D. Book of Evil 树形dp

    题目链接: http://codeforces.com/problemset/problem/337/D D. Book of Evil time limit per test2 secondsmem ...