博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【flask学习笔记】flask与HTTP,flask与mongodb交互,用手机输入局域网ip访问flask界面
阅读量:3904 次
发布时间:2019-05-23

本文共 4889 字,大约阅读时间需要 16 分钟。

文章目录

引入(关于http)

当我们在浏览器中的地址栏中输入这个URL,然后按下Enter时,稍等片刻,浏览器会显示一个问候页面。这背后有一个程序运行着。它负责接收用户的请求,并把对应的内容返回给客户端,显示在用户的浏览器上。事实上,每一个Web应用都包含这种处理模式,即“请求-响应循环(Request-Response Cycle)”:客户端发出请求,服务器端处理请求并返回响应,

flask web的工作流程:
在这里插入图片描述
从图中可以看出,HTTP在整个流程中起到了至关重要的作用,它是客户端和服务器端之间沟通的桥梁。 当用户访问一个URL,浏览器便生成对应的HTTP请求,经由互联网发送到对应的Web服务器。Web服务器接收请求,通过WSGI将HTTP格式的请求数据转换成我们的Flask程序能够使用的Python数据。在程序中,Flask根据请求的URL执行对应的视图函数,获取返回值生成响应。响应依次经过WSGI转换生成HTTP响应,再经由Web服务器传递,最终被发出请求的客户端接收。浏览器渲染响应中包含的HTML和CSS代码,并执行JavaScript代码,最终把解析后的页面呈现在用户浏览器的窗口中。

flask项目的配置

注:windows防火墙高级配置里面可以新建规则开放端口(不过好像不设置这个也可以访问)

在这里插入图片描述
打开mongodb数据库连接:
在这里插入图片描述

mongod.exe --config mongod.cfg

在这里插入图片描述
注意,记录写在了log中,所以什么都不会输出

下面是flask目录:

在这里插入图片描述
与mongodb交互的代码:

from pymongo import MongoClientclass DataBaseManager(object):    def __init__(self):            client = MongoClient()        database = client.chapter_4        self.handler = database.people_info    def query_info(self):          info_list = list(self.handler.find({
'deleted': 0}, {
'_id': 0})) return info_list def _query_last_id(self): last_info = self.handler.find({
}, {
'_id': 0, 'id': 1}).sort('id', -1).limit(1) return last_info[0]['id'] if last_info else 0 def add_info(self, para_dict): last_id = self._query_last_id() this_id = last_id + 1 para_dict['id'] = this_id try: self.handler.insert_one(para_dict) except Exception as e: print('插入数据失败,保存信息如下:{}'.format(e)) return False return True def update_info(self, people_id, para_dict): try: y = self.handler.update_one({
'id': people_id}, {
'$set': para_dict}) print(y) except Exception as e: print('更新数据错误,报错信息如下:{}'.format(e)) return False return True def del_info(self, people_id): return self.update_info(people_id, {
'deleted': 1})if __name__ == '__main__': database_manager = DataBaseManager()

main.py代码:

import jsonfrom flask import Flask, render_template, requestfrom your_code_here.DataBaseManager import DataBaseManagerfrom util.Checker import Checkerapp = Flask(__name__)manager = DataBaseManager()checker = Checker()@app.route('/')def index():    data_list = manager.query_info()    return render_template('index.html', data_list=data_list)@app.route('/add', methods=['POST'])def add_info():    info = request.json    if not checker.check_add_fields_exists(info):        return json.dumps({
'success': False, 'reason': '字段不完整'}, ensure_ascii=False) fail_reason = checker.check_value_valid(info) if fail_reason: return json.dumps({
'success': False, 'reason': fail_reason}, ensure_ascii=False) info['deleted'] = 0 insert_result = manager.add_info(info) return json.dumps({
'success': insert_result})@app.route('/update', methods=['POST'])def update_info(): info = request.json if not checker.check_update_fields_exists(info): return json.dumps({
'success': False, 'reason': '字段不完整'}, ensure_ascii=False) people_id = checker.transfer_people_id(info['people_id']) if people_id == -1: return json.dumps({
'success': False, 'reason': 'ID必需为数字'}) dict_tobe_updated = info['updated_info'] # fail_reason = checker.check_value_valid(dict_tobe_updated) #if fail_reason: # return json.dumps({'success': False, 'reason': fail_reason}, ensure_ascii=False) update_result = manager.update_info(people_id, dict_tobe_updated) return json.dumps({
'success': update_result})@app.route('/delete/
', methods=['GET'])def delete(people_id): people_id = checker.transfer_people_id(people_id) if people_id > 0: delete_result = manager.del_info(people_id) return json.dumps({
'success': delete_result}) return json.dumps({
'success': False, 'reason': 'ID必需为数字'})

template下面是html页面

    
大创开支记录
{% for data in data_list %}
{% endfor %}
序号 下单同学 物品 收货日期 订单价格 订单备注 操作
{ {data['id']}} { {data.name}} { {data.age}} { {data.birthday}} { {data.origin_home}} { {data.current_home}}

进入该目录下输入:set FLASK_APP=main.py

flask run --host=0.0.0.0 --port=8000
在这里插入图片描述
然后手机浏览器输入ip即可访问:
在这里插入图片描述
点击添加按钮,可以发现成功添加了数据。

转载地址:http://rtten.baihongyu.com/

你可能感兴趣的文章
《数据库系统概论》 第一章 绪论
查看>>
《数据库系统概论》 第二章 关系数据库
查看>>
《数据库系统概论》 第三章 关系数据库标准语言SQL
查看>>
SQL语句(二)查询语句
查看>>
SQL语句(六) 自主存取控制
查看>>
《计算机网络》第五章 运输层 ——TCP和UDP 可靠传输原理 TCP流量控制 拥塞控制 连接管理
查看>>
堆排序完整版,含注释
查看>>
二叉树深度优先遍历和广度优先遍历
查看>>
生产者消费者模型,循环队列实现
查看>>
PostgreSQL代码分析,查询优化部分,process_duplicate_ors
查看>>
PostgreSQL代码分析,查询优化部分,canonicalize_qual
查看>>
PostgreSQL代码分析,查询优化部分,pull_ands()和pull_ors()
查看>>
ORACLE权限管理调研笔记
查看>>
移进规约冲突一例
查看>>
IA32时钟周期的一些内容
查看>>
SM2椭圆曲线公钥密码算法
查看>>
获得github工程中的一个文件夹的方法
查看>>
《PostgreSQL技术内幕:查询优化深度探索》养成记
查看>>
PostgreSQL查询优化器详解之逻辑优化篇
查看>>
STM32中assert_param的使用
查看>>