django的简单原理
一.自定义客户端和服务端的请求响应
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的简单原理的更多相关文章
- Django - Django框架 简单介绍
Django框架 简单介绍 本文地址: http://blog.csdn.net/caroline_wendy/article/details/29172271 1. 介绍 Django是一个开放源码 ...
- java中异常处理机制的简单原理
以上是自认为的java异常处理的简单原理,如有不妥之处还请各位大神帮忙指点,谢谢!
- Python django实现简单的邮件系统发送邮件功能
Python django实现简单的邮件系统发送邮件功能 本文实例讲述了Python django实现简单的邮件系统发送邮件功能. django邮件系统 Django发送邮件官方中文文档 总结如下: ...
- Django中简单添加HTML、css、js等文件(非正规添加,适合小白)
Django中简单添加HTML.css.js等文件 首先申明下自己的环境, python版本3.65(亲测3.7版本有毒,没解决掉!) Django版本1.11.15(版本比较成熟,也可以用最新的版本 ...
- java——关于异常处理机制的简单原理和应用
异常处理机制的简单原理和应用 一.Execption可以分为java标准定义的异常和程序员自定义异常2种 (1)一种是当程序违反了java语规则的时候,JAVA虚拟机就会将发生的错误表示为一个异常.这 ...
- 沉淀,再出发:Django的简单使用
沉淀,再出发:Django的简单使用 一.前言 在学习了python的基础语法之后,其实大家都很怀疑python的使用场景,其实python在很多场合都有很强的适应性,就比如说web开发之中使 ...
- javascript AJAX简单原理及什么是ajax
AJAX简单原理供初学者理解 AJAX的原理: Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面.这其 ...
- 基于Django进行简单的微信开发
代码地址如下:http://www.demodashi.com/demo/11756.html 一.微信公众号的准备: 1. 注册 访问地址:https://mp.weixin.qq.com/ 按照提 ...
- Python Django 实现简单注册功能
Python Django 实现简单注册功能 项目创建略,可参考前期文档介绍. 目录结构如下 编辑views.py from django.shortcuts import render # Crea ...
随机推荐
- [UE4]Window Title Bar Area
一.Window Title Bar Area.windows窗口拖拽控件 二.window Buttons Enabled,在控件的右上角显示:最小化.最大化,关闭按钮; Toggle Fullsc ...
- [UE4]CheckBox
一.CheckBox默认情况下是比较小的 二.要让CheckBox变大,最简单的方法就是直接设置Transform.Scale,但如此一来CheckBox就变得模糊了. 三.CheckBox控件是在C ...
- vue route
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- RHEL7调图形化
RHEL7调图形化 作者:Eric 微信:loveoracle11g 1.将默认的运行级别修改为"多用户,无图模式" [root@server ~]# ln -sf /lib/sy ...
- Spring整体了解
1.spring原理 内部最核心的就是IOC了,动态注入,让一个对象的创建不用new了,可以自动的生产,这其实就是利用java里的反射,反射其实就是在运行时动态的去创建.调用对象,Spring就是 ...
- gentoo 工具命令
查看具体某个命令来源于哪个软件包,使用 equery,比如说查找 lsusb 来源于哪个包,可以用 equery belongs lsusb
- 解决 jdk8 Illegal key size or default parameters 错误
网上搜到的答案如:https://blog.csdn.net/educast/article/details/81060085 大多是jdk1.6或1.7版本,有的jdk是1.8.99之前的版本,而 ...
- Smart Contract - Hello World
[编写Smart Contract] 1.包含头文件. #include <eosiolib/eosio.hpp> #include <eosiolib/print.hpp> ...
- 微信小程序和微信公众号的id是一个吗
首先,简单说下我遇到的问题是我们的程序调用微信小程序得到openid,然后通过openID得到用户的唯一标识,用户得以登录,然而,当我们调用微信公众号也同样的到openid,同一以用户两个不同的ope ...
- win server 2012 服务器不能ping通
以windows server 2012作为服务器,服务器能够ping通局域网中的客户端A,但A不能ping通服务器. 解决办法: 确定服务器中系统->远程设置->远程桌面选项下为允许选项 ...