一、web开发介绍1、web开发概述

c/s结构和b/s结构,客户机/服务器结构和浏览器/服务器结构即web开发。

b/s结构的优势:

不用通知客户端安装某个软件

不需要通知客户端升级

可以轻松的实现跨平台。

访问网站的过程:用户向web服务器发送请求,然后返回一个HTML文件。

静态网站:直接返回HTML文件给用户。

动态网站:用户请求->执行Python程序(与数据库进行交互)->执行结果->返回HTML给用户。

采用mvc设计web应用:

m: model模型,存储web应用数据的代码

v: view视图,格式化和显示web应用的用户界面的代码

c: controller控制器,将web应用粘合在一起并提供业务逻辑的代码。

CGI:

common gateway interface

可以让一个客户端,从网页浏览器向服务器请求数据。这是描述客户端和服务器程序之间传输数据的一个标准。

应用于web的编程语言:

PHP

ASP/ASP.net

JSP

Python。2、web应用的结构

web应用结构概览:

前端程序:HTML、CSS、js(混合使用)

后台程序:Python、PHP、JSP(只有一种就可以)

数据库:MySQL(关系型数据库)、mongodb(非关系型数据库)。

前端:

HTML  超文本标记语言,不是被执行,而是被渲染

CSS 层叠样式表,规定样式

js  和JAVA并没有联系。

数据库及静态存储:

MySQL

sqlite

mongodb。3、HTML和JavaScript的简单介绍

目标:

使用HTML语言和js语言,编写程序,使其可以完成两个整数的加法。并将结果输出在HTML页面中。

html页面

js文件

二、用Python进行CGI编程1、CGI介绍

CGI是运行在服务器上的程序,提供同客户端HTML页面的接口。它的全称是 common gateway interface(通用网关接口)

CGI程序可以是Python脚本,Perl脚本,c或者c++程序等。换句话说,CGI程序是不限定适用语言的。

历史:

1993年由ncsa开发(跟我一样大,哈哈)

1997年制定了CGI1.1规范。

CGI工作原理:

浏览器访问URL并连接到web服务器

web服务器接收到请求信息后会解析URL,并查找访问的文件在服务器上是否存在,如果存在就返回文件的内容,否则返回错误信息

浏览器从服务器上接收信息,并显示接收的文件或者错误信息。

缺点及改进:

每次的CGI请求都要求生成一个程序的副本来进行

fastcgi-先编译

mod_perl-将解释器作为模块集成在web服务器中

使用c等编译语言。

CGI中的环境变量:

CGI程序都接收一些环境变量,这些环境变量非常有用,例如:

content_type:指示传递来信息的类型

http_cookie:客户机的cookie内容

remote_addr:发送请求的客户机的IP地址

request_method:脚本被调用的方法,如get和post方法。

get方法和post方法:

浏览器客户端通过两种方法向服务器传递信息,这两种方法就是get方法和post方法

get方法发送用户信息到服务端,数据信息包含在请求URL上,以?分割。例如:

http://www.dong.com/cgi-bin/hello.py?key1=Value&key2=Value2。

get请求可被浏览器缓存

get请求会保存在历史记录中

get请求有长度限制

get请求不应用于敏感场合

get请求只应当用于取回数据

使用post方法向服务器传递数据是更安全可靠的,像一些敏感数据如用户密码等需要使用post传输

post请求会包含在http请求的头中

post请求不会显示在URL中。2、Python中的web服务器

Python自带的web服务器:

Python自带的包可以建立简单的web服务器

basehttpserver:提供基本的web服务器和处理类

simplehttpserver:包含执行get请求的simpleHttprequestHandler类

CGIHttpServer:包含处理post请求和执行的CGIhttprequesthandler类。

示例:

使用Apache:

Apache是Apache软件基金会的一个开源网页服务器软件。同样由ncsa开发。

Apache可以通过简单的API扩充将Python解释器编译到服务器中。

市场占有率达到53.67%(2009 netcraft)

第一个CGI程序:

创建目录

编写CGI程序

开启服务器

使用浏览器访问

3、实战:用CGI编写加法器

目标:

使用Python语言,使用get请求和post请求,配合HTML和js程序,完成之前的加法器。并开启服务器,使得其他人可以进行访问。

创建模板文件

主文件

运行效果

三、Python web框架开发1、web开发框架介绍

何谓框架?

软件框架,指的是为了实现某个业界标准或者完成特别基本任务的软件组件规范,也指为了实现某个软件组建规范时,提供规范所要求之基础功能的软件产品。

框架的功能类似于基础设施,提供并实现最为基础的软件架构和体系。我们通常依据特定的框架实现更为复杂的业务逻辑。

框架,就是程序的骨架。

使用框架的好处

可重用

成熟,稳健

可扩展性良好

提高开发速度

什么是web框架

web应用框架是支持动态网站、网络应用程序的软件框架。

web框架的工作方式:接收http请求并处理,分派代码,产生HTML,创建http响应。

web框架通常包含了:URL路由,数据库管理,模板引擎等。

使用web框架的优缺点

着重业务逻辑

高度可重用

选对框架很重要

web框架中的概念

mvc

orm  对象关系映射  将一个类映射成数据库中的一张表

URL route  将访问的地址映射到相应的函数中

template  模板  将数据可以传递到HTML代码中进行渲染2、Python中的web框架

sudo pip install flask3、实战:使用flask编写加法器

目标

使用Python语言和flask框架,配合HTML和js程序,完成之前的加法器。并开启服务器,使得其他人可以进行访问。

四、flask表单开发1、表单介绍

何谓表单?

表单是HTML页面中负责数据采集功能的部件。它往往由三部分组成,即表单标签、表单域、表单按钮。我们可以通过表单,将用户输入的数据提交给服务端,并交由服务端进行处理。

表单标签

用于声明表单的范围,位于表单标签中的元素将被提交

语法:

属性:method, enctype, action...

表单域

表单域包含了文本框,密码框等多种类型

语法:

属性:tyep, name, value...

表单域的种类

文本框 <... type = text>

密码框  <... type = password>

文本区域  <... type = textarea>

文件上传框  <... type = file>

单选框  <... type = radio>

复选框  <... type = checkbox>

......

表单按钮

提交按钮

复位按钮

一般按钮

实例:一个含有多种元素的表单

使用HTML语言,尝试编写一个含有多种元素的表单。并进行简单的排版。同时,尝试通过JavaScript取得页面元素的值。

2、表单的提交方式

get和post

get方式通过URL提交数据,数据在URL中可以看到

post方式,数据放置在HTML header中提交

例如:get方式:www.baidu.com/?wd=value

post方式:在http头中提交 wd=value

两种提交方式的区别

get请求可以被浏览器缓存

post所请求的URL可以被缓存,但数据不会被缓存

post请求不便于分享

post请求没有限制

get请求的数据暴露在URL中,会带来一些安全问题

get方式的使用场合

单纯的请求数据,不进行其他操作

表单数据较短,不超过1024个字符

对安全性要求一般的场合

post方式适用的场合

数据不仅仅用于请求,例如,需要将数据插入数据库内

表单数据过长时

要传送的数据不是ASCII编码3、实战:用flask开发用户管理(一)

目标

使用flask框架,配合HTML和JavaScript程序,编写一个页面。该页面判断用户提交的用户名和密码是否分别为dong和123456,如果是则跳转到百度的首页,否则返回错误信息。

使用wetforms包来做输入的判断

模板里更换表单域

sudo pip install Flask-wtf安装wtf包。但是由于我安装了多个版本的Python,pycharm一直运行不了,这时可以通过指定Python版本来解决。

pycharm指定Python运行版本

五、Python的数据库连接1、数据库基础

何谓数据库?

数据库,可以理解为电子化的文件柜。用户可以对文件柜中的数据进行增、删、改、查的操作。

数据库管理系统,是为管理数据库而设计的电脑软件系统。一般会具有存储、截取、安全保障、备份等基础功能。

数据库的分类

关系型数据库   数据以关系型存放,像一个表格

MySQL、sqlite、postgresql、Oracle、Microsoft Access ...

非关系型数据库

bigtable、mongodb、leveldb ...

为什么要使用数据库管理系统(dbms)

减少记录编档的时间

减少记录检索的时间

灵活的查找序列

灵活的输出格式

多个用户同时访问记录

演示:在Mac上安装MySQL数据库和相关的管理工具

需要安装的软件:

MySQL

workbench - 图形化管理界面

我没有能用成功就在pycharm专业版上用的sqlite数据库。2、数据库查询语言sql

何谓sql?

结构化查询语言,是一种用语数据库中的标准数据查询语言。由IBM最早用在其开发的数据库系统中。1986年10月,成为关系型数据库管理系统的标准语言。不同数据库系统之间的sql不能完全互相通用。

sql可以完成数据定义、数据操作、数据控制的作用。

sql语言实例

查询

select Column1 ... from tbl where Column = value order by id desc

插入

insert into tbl (Column1, Column2 ...) values (value1, value2)

删除

delete from tbl where Column = value

修改

update tbl set Column = value where Column = value

python3web开发教程_三、Python web开发入门相关推荐

  1. python在线搭建教程_理解python web开发,轻松搭建web app!

    大家好,今天分享给大家的是理解python web开发,轻松搭建web app,希望大家学有所获! 因为 python代码的优雅美观且易于维护这一特点,越来越多的人选择使用 Python做web开发. ...

  2. python web开发前景_【python web开发工程师就业前景怎么样|做python web开发工程师有前途吗】-看准网...

    python web开发工程师就业前景分析 这个数据对你 有帮助吗? 数据详情 该职位2016年3月招聘需求230个,涨幅0% 数据说明 图表中根据地区企业近一年发布的职位招聘信息统计所得,纵轴为职位 ...

  3. python notebook右侧网页_《Python web开发》笔记 一:网页开发基础

    网页基础知识 网页的构成 网页由html.css和Javascript构成,html是框架,CSS是样式和装饰,JS则是各项功能实现.我们把网页的组成类比成一栋房子,Html相当于房子的结构,CSS相 ...

  4. python 第三方登录_【Python web 开发】social_django 集成第三方登录

    1.背景: 我们之前写的一些接口仅仅是知道微博授权的一个流程,要把第三方授权登录的用户的user_id 弄到我们的user_profile 中来才是 符合业务的需求的 因此gitbub上已经有一些开源 ...

  5. web开发指南_成为专业Web开发人员的实用指南

    web开发指南 This article is meant to serve as a practical guide to becoming a professional web developer ...

  6. web开发方法_确保进入Web开发的最快方法

    web开发方法 做很多项目. (Do lots of projects.) I'm not kidding, it's really that simple. If you've internaliz ...

  7. java微信公众号开发教程_微信公众平台开发教程(java版本含代码) 中文PDF版 3.13MB...

    本文档将对即将推出的微信公众帐号开发系列连载教程做简单的说明. 教程主要是面向有一定 Java 编程基础的朋友, 目录: 微信公众帐号开发教程第 1 篇-引言  2 微信公众帐号开发教程第 2 篇-微 ...

  8. python开发工资多少-三年 python web 开发,在深圳工资大概时多少?

    你说,有三年python web开发经验,在现公司负责整个web架构,前后端分离,项目管理,服务部署,分布式集群,前端也可以写,想知道在深圳工资大概是多少.刚才上网帮你查了下,薪资水平大概是这样的(请 ...

  9. python异步教程_【Python 异步编程入门】

    本文是写给 JavaScript 程序员的 Python 教程. Python 的异步编程,其他人可能觉得很难,但是 JavaScript 程序员应该特别容易理解,因为两者的概念和语法类似.JavaS ...

最新文章

  1. Struts2的类型转换(下)
  2. gcc编译C++程序
  3. 计算机辅助工艺设计张胜文,计算机辅助工装设计.ppt
  4. java分享第十七天-01(封装操作xml类)
  5. Python 3.9 beta2 版本发布了,看看新特性?
  6. 京东探索研究院 34 篇论文入选 CVPR 2022
  7. three相机在模型上_实例讲解Three.js加载外部模型
  8. Call for Presentations!Flink Forward Global 2021 议题征集ing
  9. python下载豆丁文档_.NET - edu.docin.com豆丁校园
  10. java 获取本机ip地址吗_java 获取本机ip地址
  11. EXCEL表格超链接图片
  12. 电子产品--耐久性试验--可靠性试验--热测试试验--老化试验
  13. 给自己一个不断学习的理由
  14. wamp phpMyAdmin error #1045 - Access denied for user root@locahost Fixed!
  15. 数据结构总结与知识网图
  16. 人口流向数据_2017中国流动人口发展报告(数据摘要)
  17. map遍历的三种基础用法
  18. 克劳士比:有用的和可信赖的组织的核心是什么?
  19. 干货 | 携程酒店安卓地图开发实践
  20. jso是什么意思_js中this什么意思

热门文章

  1. AR联机游戏制作过程记录(11.11)
  2. ANDROID 学习笔记(三) UI THREAD AsyncTask 使用
  3. 马云爸爸成立快一年的达摩院,究竟在做什么?
  4. “由于无法验证发行者,所以WINDOWS已经阻止此软件”的解决方法
  5. 发表16篇Nature、14篇Science!这位顶尖学者告诉你论文十大诀窍
  6. 多重网格法(multigrid)求解1d泊松方程--python
  7. adobe captivate 5.5 中文教程
  8. Zookeeper端口和ip修改
  9. 【证明】对称矩阵特征方程k重根恰有k个线性无关的特征向量
  10. Altium Designer 18中的Multi-board Schematic–Defaults