Web入门:
- 学习目的:设置简单网页所需的工具并发布你自己的简易代码
建立第一个网站
- 软件安装
- 做好规划,将展示什么信息,将使用什么样的字体和颜色:网站看起来是什么样的
绘制草图:内容主题,图像,字体
- 处理文件
网站应该保存在何处:本地网站,相关文件放入一个单独文件夹中,可以映射出服务器端站点文件结构。首先确定网站项目存储位置,存放所有网站项目。
- 网站应该使用什么结构?
最基本、最常见的结构:一个主页index.html、一个图片文件夹image、一个样式表文件夹styles和一个脚本文件夹scripts
- HTML,CSS, JS基础
- JS:动态编程语言,当应用于HTML文档时,可为网站提供动态交互特性
- 应用场合:极其广泛;简单到幻灯片、照片库、浮动布局和响应按钮点击,复杂到游戏、2D/3D动画,大型数据库驱动程序等。
- 发布网站:Github
写好了代码并且整理好了网站的全部文件后,需要将它们全部上线,这样别人才能看到。
- 获取主机服务和域名:这种方法接入互联网,本地文件与服务器文件传输
- 在线工具发布网站:
- Github社交编程网站,允许上传代码库并储存在Git版本控制系统里,然后可以协作代码项目。一个特点:GitHub pages,允许将代码放在网上
- Google App Engine:可从头开始构建多级web应用,或是托管一个静态网站
- 网站如如何运行的:万维网的工作
《Flask Web开发实战》
- 章节概括
flask框架学习实战:Web开发
记录知识点:blog
总结回顾脑子里的框架:note
整体思路
联合项目:
- h5页面:展示
- 后端处理:前端发送请求给后端,后端处理,前后端分离实现前后端呼应:vue实现
- 实现逻辑(python)
三个框架:
- flask:轻量级,灵活
- tornado:c10k
- Django:重量级
虚拟环境
- 为什么使用虚拟环境:多个项目(app开发):满足不同版本的包的需求就使用不同的虚拟环境(不同的house放不同的包,开发不同的app就进入不同的house(安装包到这个house/虚拟环境)进行开发)
- 如何创建虚拟环境
windows下:首先virtualenv,然后管理虚拟环境virtualenvwrapper
开发Web程序:针对服务器端
- b/s:browser/server 浏览器(PC端浏览器作为客户端)/服务器
- c/s:client/server 客户端(手机上app应用)/服务器
WSGI服务器
是Python语言定义的Web服务器和Web应用程序或框架之间一种简单通用的接口(遵循规则)
- 框架有多种,保证很好的融合:app.run()自动遵循WSGI跟服务器进行融合
app的丰富
- 404:请求的东西没有
- 装饰器:路由定义与视图函数
- 输入域名进行浏览器访问:根据路径进行访问指定的server端口号
- run(host = ‘ip地址’, port=‘端口号’)
- ip地址,一个端口号对应一个程序
默认情况下是本机访问,如果想让外网(云服务器下)都能访问必须在run()中修改ip地址0.0.0.0的形式
- debug默认off
debug是为开发人员准备的:开发的代码改变,debug=true,服务器实时改变(reload重新加载最新的代码)
- 设置配置文件
app加载配置文件即可
配置信息拥有字典数据的类
- 请求与响应
包含三样东西:请求/响应行,请求/响应头,请求/响应体
post拥有请求体
response:响应,状态码:200ok,404not found,http状态码大全
响应头:headers
响应体:响应一堆标签:返回的内容,浏览器翻译标签
- 路由
- 给路由默认绑定视图函数
路由是一个装饰器,装饰一个函数add_url_rule()- 路由的变量规则:路由部分出现变量,且返回类型的确定:uuid的使用(用作标识)
- 路由的处理:/的添加与不添加。路由是自上而下而匹配的。
- 请求和响应
返回:
- 字典浏览器以js格式进行翻译;
- 其余按照html的语法翻译,处理成网页形式;
- response:是类对象,其中可以有属性、方法(可以进行调用)
- request:类对象,其中封装了请求头和请求体;获取页面参数交个后端-
request.args.get(‘username’) //get的获取方式
request.form.get(‘username’) //post的获取方式
- 重定向redirect():有两次响应,第一次那个302状态码,第二次立马改变浏览器地址栏内容为location地址,向服务器再次发请求
- url_for(endpoint, values):装饰器中包含endpoint参数,作用:当路径过长时,进行重定向时根据url_for()进行映射,即路由的反向解析。
- 模板:(网页)
- 模板引擎:底层jinjia2来处理的(最终是返回成字符串的)
函数已经由装饰器app装饰过,此函数会默认从规定好的文件夹来找东西。
- 模板语法:
- 变量:list(列表)、dict(字典)、object(对象)
- 代码控制块:for , if-else,loop
{% for girl in girls %}
。。。
{% end for %}- 模板的继承、block、include、宏
- js代码:前端动作响应
- 蓝图
- 目的:将项目分成不同功能,apps包(定义初始化函数用来创建一个app对象,)中存放不同的功能包(自己单独定义自己的路由:导入蓝图,注册蓝图,装饰器路由与绑定函数定义)
- 蓝图也是路由的不同表示方式,将app进行分解,蓝图承担联系的任务
定义蓝图、注册对应蓝图(联系到一个app中)
now:view、template、蓝图
接下来:model-数据库:增删改查
- flask-script:让命令行支持自定义命令的工具——runserver:通过命令对其进行操作
- manager的config配置
- 目的:进行命令的管理和使用
- 公共配置类,开发环境下的配置类,生产环境下的配置类
配置:
- 连接路径
- 创建映射对象db,实现app与第三方映射工具(数据库)之间的关联
- 创建命令,交给manager管理
- 创建模型类:models.py文件——类继承model
- 使用命令:
- 在终端执行python app.py db init,产生文件夹migrations
- 在终端执行python app.py db migtrate,生成了alembic_version版本表(升级/降级更新)
- 数据库准备(配置信息):
flask app与数据库:
- flask-sqlalchemy(第三方拓展)基于SQLAlchemy,并让程序员使用起来更加方便:实现ORM映射
- flask-migrate:发布命令工具
两者都要挂到app上,migrate实现映射
flask的项目结构对数据库的搭建:(见上3条配置)
- model类:
- 继承db
- 书写model
- 执行命令,生成表
- 密码加密:对password处理
查询Query
- filter
- filter_by
参考blog,二者返回值
具体查询要求blog