一.自定义客户端和服务端的请求响应

  1.客户端打开url,向服务器发出请求

  2.服务端用socket写一个py,用于接收请求和做出响应

  3.服务端接收请求

  4.服务端模拟HTTP协议做出响应,状态行为 b"HTTP/1.1 200 ok\r\n\r\n响应正文"

import socket

server = socket.socket()
server.bind(("127.0.0.1",8888))
server.listen() conn,addr = server.accept() from_meg = conn.recv(1024)
conn.send(b"HTTP/1.1 200 ok \r\n\r\n")
conn.send(b"hello")

一个简单的响应

二.wsgiref模块

  wsgiref模块将整个请求信息给封装起来,把服务器端的请求数据进行整理.python库提供WSGI规范的服务器就是wsgiref模块

from wsgiref.simple_server import make_server

def application(environ, start_response):   # environ请求信息是个字典,start_response响应信息
# 给浏览器的状态行,响应头
start_response("200 ok", [("Conten-Type", "text/html"), ("k1", "v1")])
# print(environ) # 字典
path = environ["PATH_INFO"] # 请求路径信息
data = "页面错误".encode("gbk")
return [data] # 响应内容
httpd = make_server("1270.0.0.1",8001,application)
httpd.serve_forever()

wsgiref模块的模板

三.渲染模板jinja2

  封装了手动替换进行渲染的方法

  1.py文件中

    template = Template(html)  把页面内容做参数,形成模板

    data = template.render({"k":"v"})  k是html中需要替换的,v是py中给替换的内容

  2.html中

    {{ k }}  需要替换的

    {% for i in lst %}  遍历列表,lst是要替换的

    {% endfor %}  结束遍历

四.web框架本质

  web框架就是socket服务端和浏览器的通讯

  1.socket的服务端功能:

    a.负责与浏览器收发消息

    b.根据用户访问不同的路径执行不同的函数

    c.从html读取内容,并完成字符串替换进行渲染

  2.python中web框架

    tornado框架,自带abc

    django框架,自带bc,使用第三方wsgiref模块做的a

    flask框架,自带b,使用第三方的ac

五.MVC和MTV框架

  1. MVC

    M:model  就是和数据库的关系映射

    V:view   视图,(函数+html文件)

    C:control  控制器,url分发和函数处理逻辑关系

    

  2.MTV(django)

    M:model模型:负责业务对象和数据库的关系映射

    T:template模板:负责如何把页面展示给用户

    V:view视图:负责业务逻辑,并在适当时候调用模型和模板

    Django还需要一个url分发器,就是想不同url请求分发给view处理

    

六.django的简单使用

  1.用命令行创建django项目

    切换到要创建项目的目录

    Django-admin startproject 项目名

  2.启动项目

    在有manage.py的目录下

    python manage.py runserver 127.0.0.1:8001

  3.创建项目应用

    在有manage.py的目录下

    python manage.py startapp 应用名

  4.新建项目中的各个文件简单介绍

    manage  可以调用django shell和数据库,启动关闭项目,和项目的交互

    settings  项目的默认配置,包括数据库信息,调试标志以及一些工作变量

    urls    负责url映射到应用程序

    wsgi    封装着socket的相关内容

    models   数据库相关,存放表结构

    views    视图函数

django的简单原理的更多相关文章

  1. Django - Django框架 简单介绍

    Django框架 简单介绍 本文地址: http://blog.csdn.net/caroline_wendy/article/details/29172271 1. 介绍 Django是一个开放源码 ...

  2. java中异常处理机制的简单原理

    以上是自认为的java异常处理的简单原理,如有不妥之处还请各位大神帮忙指点,谢谢!

  3. Python django实现简单的邮件系统发送邮件功能

    Python django实现简单的邮件系统发送邮件功能 本文实例讲述了Python django实现简单的邮件系统发送邮件功能. django邮件系统 Django发送邮件官方中文文档 总结如下: ...

  4. Django中简单添加HTML、css、js等文件(非正规添加,适合小白)

    Django中简单添加HTML.css.js等文件 首先申明下自己的环境, python版本3.65(亲测3.7版本有毒,没解决掉!) Django版本1.11.15(版本比较成熟,也可以用最新的版本 ...

  5. java——关于异常处理机制的简单原理和应用

    异常处理机制的简单原理和应用 一.Execption可以分为java标准定义的异常和程序员自定义异常2种 (1)一种是当程序违反了java语规则的时候,JAVA虚拟机就会将发生的错误表示为一个异常.这 ...

  6. 沉淀,再出发:Django的简单使用

    沉淀,再出发:Django的简单使用 一.前言     在学习了python的基础语法之后,其实大家都很怀疑python的使用场景,其实python在很多场合都有很强的适应性,就比如说web开发之中使 ...

  7. javascript AJAX简单原理及什么是ajax

    AJAX简单原理供初学者理解 AJAX的原理: Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面.这其 ...

  8. 基于Django进行简单的微信开发

    代码地址如下:http://www.demodashi.com/demo/11756.html 一.微信公众号的准备: 1. 注册 访问地址:https://mp.weixin.qq.com/ 按照提 ...

  9. Python Django 实现简单注册功能

    Python Django 实现简单注册功能 项目创建略,可参考前期文档介绍. 目录结构如下 编辑views.py from django.shortcuts import render # Crea ...

随机推荐

  1. c# 字典

    字典 在System.Collections.Generic下, 对应HashTable,添加了泛型的特性,性能更高跟安全 在内存中是散列排布的,存储也是键值对 Dictionary<键的数据类 ...

  2. 读书笔记——《redis入门指南(第2版)》第三章 入门

    3 .redis的5种数据类型及相应命令 redis不区分命令大小写. string 512m 一个散列类型键可包含至多232-1个字段 一个列表类型键最多能容纳232-1个元素 一个集合类型键最多能 ...

  3. Scrum Meeting 博客目录

    秘制牛肉团队 Scrum Meeting 博客汇总 一.Alpha阶段 团队第一次 # scrum meeting 团队第二次 # scrum meeting 团队第三次 # scrum meetin ...

  4. python程序正式开始

    第几个hello world 程序了,为曾经没有毅力的自己默哀下.今天的课程语言的分类,三大类:机器语言,汇编语言,高级语言. 其中最让我痛恨的就是汇编语言,我们大学没事开什么这课程,大学混日子的喔不 ...

  5. JAVA性能优化:35个小细节让你提升java代码的运行效率

    代码优化,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是, ...

  6. JAVA Aes加解密详解

    上篇随笔留了一个问题,两种加密结果不一样? 其实是内部实现方式不一样,具体见注释 /** * 提供密钥和向量进行加密 * * @param sSrc * @param key * @param iv ...

  7. 关于ES6兼容IE 问题记录之一

    这两天在做前端网页时,遇到一个问题,页面打开发生乱码,如下: 现象:360 浏览器,在急速模式下(即谷歌模式)是OK的显示,第一张图布局OK:在兼容模式下(即IE模式)是显示NG的,第二张图布局乱码 ...

  8. Linux:sudo,没有找到有效的 sudoers 资源。

    首先,这是因为用户的权限不够导致的. 使用 ls -l /etc/passwd 查看所有用户及权限.只有可读权限(r),说明用户的权限不够. 因此,我们可以用以下方法修改用户权限: 1. su roo ...

  9. ArcGIS自定义脚本-通过txt/excel/dbf/table生成多边形要素类

    ArcGIS自定义脚本-通过txt/excel/dbf/table生成多边形要素类 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 目的:读取文本文件,常见多边形要素 ...

  10. 合并数组,改变原数组apply与不改变原数组

    一看见合并数组,可能第一反应就是concat,concat确实具有我们想要的行为,但它实际上并不附加到现有数组,而是创建并返回一个新数组. 同样你也许会想到ES6的扩展运算符...         但 ...