[关闭]
@tsingwong 2016-10-13T08:28:15.000000Z 字数 3216 阅读 883

Python Web学习

Python


Web开发概念

C/S——Client/Server 即客户机/服务器结构
B/S——Browser/Server 即浏览器/服务器结构

静态站点——浏览器发起http请求,Web服务器返回HTML文件返回浏览器。
动态站点——浏览器发起请求,Web服务器执行某些程序(python程序,
PHP程序或JSP程序),执行结果输出HTML文件返回浏览器。

现在多使用MVC设计Web应用
M:Model 模型,存储Web应用数据的代码
V:view 视图,格式化和显示Web应用的用户界面和代码
C:controller 控制器,将Web应用粘合在一起并提供业务逻辑的代码

CGI——Common GateWay Interface 通用网管接口,可以让一个客户端,从浏览器向服务器请求数据。是描述客户端与服务器程序之间传输数据的标准。

Web应用结构

前端程序——HTML + CSS + JS
后台程序——Python或PHP或JSP等
数据库——Mysql或MongoDB等

HTML——Hyper Text Markup Language 超文本标记语言,标记语言不是被编译执行的,而是渲染显示
CSS——Cascading Style Sheets 层叠样式表
JS——JavaScript 直译脚本语言

CGI 介绍

CGI,运行在服务器上的程序,提供同客户端HTML页面的接口。CGI程序不限定语言。

工作原理

CGI中的环境变量

GET 和 POST 方法

浏览器客户端通过两种方法向服务器传递信息,这两种方法就是 GET 方法和 POST 方法。
- GET 方法发送用户信息到服务端,数据信息包含在请求 URL 上,以?分割。如: http://www.jikexueyuan.com/cgi-bin/hello.py?key1=Value&key2=Value2
- GET 请求可以被浏览器缓存
- GET 请求会保存在历史记录中
- GET 请求有长度限制(1024字符)
- GET 请求不应用于敏感场合

Python 中 Web 服务器

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

  1. BaseHTTPServer: 提供基本的 Web 服务和处理类
  2. SimpleHTTPServer: 包含执行 GET 请求的SimpleHTTPRequestHandler
  3. CGIHTTPServer: 包含处理 POST 请求和执行的 CGIHTTPRequsetHandle

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

CGI程序编写过程:
- 创建目录
- 编写CGI程序
- 开启服务器
- 使用浏览器访问

CGI 中运行 Python程序前需要以下步骤:

1.指定了用来执行本脚本的解释器,即在.py文件头部加入下面语句

  1. #!/usr/bin/env python2

2.为.py文件增加执行权限

  1. chmod +x main.py

3.运行程序

  1. python -m CGIHTTPServer port # 最后一个为端口号,如8081等

注:输出之前记得先输出Content-type,即:

  1. print("Content-type: text/html \n\n")

Web 开发框架

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

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

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

工作方式: 接受 HTTP 请求并处理,分派代码,产生 HTML,创建 HTTP 相应。

表单

表单是 HTML 页面中负责数据采集功能的部件。三部份组成,即表单标签、表单域、表单按钮。

表单标签

表单域

表单按钮

大致有三种,提交按钮,复位按钮和一般按钮

lable标签

  1. <form>
  2. <label for="male">Male</label>
  3. <input type="radio" name="sex" id="male" />
  4. <br />
  5. <label for="female">Female</label>
  6. <input type="radio" name="sex" id="female" />
  7. </form>

for属性与相应的元素的id属性相同。

表单中的id属性与name属性

当作为锚点使用时,两者都可以但是强烈建议用id

  1. <a name="myname"></a>
  2. <div id="myid"></div>

以下情况只能使用id:

  1. # 1. label与form控件关联:
  2. <label for="MyId">MyId</label>
  3. <input type="text" id="MyId" name="MyName"/>
  4. # 2. CSS选择器中,只能使用#id,并不能使用name属性
  5. # 3. 在获取对象时,IE中支持直接使用id来引用该id属性的对象。
  6. MyId.value
  7. DOM实现同样的操作,则需要:
  8. document.getElementById("MyId").value
  9. 使用name的话:
  10. document.forms[0]['MyName'].value

以下情况中只能使用name:

表单的控件名,提交数据时使用控件的name。因为name可以同时对应多个控件,如check和radio,但id必须是全文档唯一的。

数据库

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

数据库分类

SQL

SQL(Structured Query Language,结构化查询语言),用于数据库中的标准数据查询语言。

Python2.x

安装MySQL—Python库遇到一堆杂毛问题,总归来说以下几点改正:

PYPI上下载安装包

  1. # 解压出来运行
  2. python setup.py build
  3. python setup.py install
  4. # 错误1,:大致是因为没有安装libmysqld-dev和libmysqlclient-dev开发包
  5. EnvironmentError: mysql_config not found
  6. # 解决方法
  7. sudo apt-get install libmysqld-dev libmysqlclient-dev
  8. # 错误2:大致是因为没有安装python-devel 开发包
  9. # 解决方法
  10. sudo apt-get install python-dev
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注