Web 框架 (本质:socket)

Python web框架
          自己实现socket
               - Tornado
          基于wsgi
               -djago 
 
所有web框架由以下扩展: 
#!/usr/bin/env python
#coding:utf-8 import socket def handle_request(client):
buf = client.recv(1024)
client.send("HTTP/1.1 200 OK\r\n\r\n")
client.send("Hello, Seven") def main():
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(('localhost',8000))
sock.listen(5) while True:
connection, address = sock.accept()
handle_request(connection)
connection.close() if __name__ == '__main__':
main()

client.send 可以换成读取文件

 
WSGI(Web Server Gateway Interface)是一种规范,它定义了使用python编写的web app与web server之间接口格式,实现web app与web server间的解耦。

自己开发一个web框架(基于wsgi):

#!/usr/bin/env python
#coding:utf-8 from wsgiref.simple_server import make_server def RunServer(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/html')])
return '<h1>Hello, web!</h1>' if __name__ == '__main__':
httpd = make_server('', 8000, RunServer)
print "Serving HTTP on port 8000..."
httpd.serve_forever()
  # while true:
  #socket.accept() #内部本质做了这两步

  

MVC/MTV

处理用户请求   放置HTML模版   操作数据库

Controllers        Views            Modals

Views                Template      Modals

Django  > MTV

Django

安装:

  pip3 install django

  添加环境变量

1.创建project

  django-admin startproject mysite

  mysite

    mysite:

        -setting.py  #配置文件

        -url.py   #路由系统

        -wsgi     #WSGI

    manage.py   #django程序启动文件

2. 创建app

  teminal cd mysite

  python3 manage.py startapp cmdb

3。 编写代码

  urls.py

  view.py

4. 启动django

  python3 manage.py runserver 127.0.0.1:8000

5. 使用模版

  setting配置

  render(request,'路径')

6.静态文件配置

STATIC_URL = '/fff/'

STATICFILES_DIRS = (
os.path.join(BASE_DIR,'statics'),
)

7. 连接数据库

  注册app

  settings.py

  INTSALLED_APPS -[

  'cmdb',

  ]

  models:

    class UserInfo(models.Model):
user = models.CharField(max_length=32)
email = models.CharField(max_length=32)
执行命令:
  python3 manage.py makemigrations
  python3 manage.py migrate
  

   

Python 一路走来 Django的更多相关文章

  1. Python一路走来 RabbitMQ

    一:介绍:(induction) Rabbitmq 是一个消息中间件.他的思想就是:接收和发送消息.你可以把它想成一个邮政局.当你把你的邮件发送到邮箱的,首先你需要确认的是:邮政员先生能把你的邮件发送 ...

  2. Python一路走来 - python基础 数据类型

    对于Python,一切事物都是对象,对象基于类创建 Python数据类型 python主要的数据类型主要包括以下几种类型: (1) 数字型 (2) 字符串 (3) 列表 (4) 元组 (5) 字典 ( ...

  3. Python一路走来 DAY15 Javascript

    JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处理. 一 如何编写     ...

  4. Python一路走来 线程 进程

    Python线程 Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #!/usr/bin/env pytho ...

  5. Python一路走来 面向对象1

    面向对象: 类,对象 函数放在类里,叫方法 封装 #如何调用 1. 创建对象, 类名() obj= Foo() 2. 通过对象去执行方法 obj.mail("leon@me.com" ...

  6. Python一路走来 - 模块

    模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才 ...

  7. Python 一路走来 DOM & Jquery

    DOM           查找:                直接查找                间接查找                —getElementById             ...

  8. Python 一路走来 HTML CSS Javascript

    前端三把利器 HTML          -标签 (成对写不容易忘记闭合)                     自闭和标签           标签里写个 xx=xx, 表示标签的属性       ...

  9. Python一路走来 Python算法

    冒泡排序: 1,2位置左右比较.大的排右边,继续比较2,3 ...... list=[5,7,2,8,12,1] #print(len(list)) for j in range(len(list)) ...

随机推荐

  1. AVAudioPlayer音频播放器-备用

    IOS中有三种播放音频的方式:AVAudioPlayer.音频服务.音频队列. 此文主要讲AVAudioPlayer,其他两个请见相关文章. AVAudioPlayer在AVFoundation框架下 ...

  2. AtomicInteger小小的理解

    这里仅仅是验证多线程环境下,AtomicInteger的安全性. 通过源码不难发现两点: 1.value属性是volatile修饰 2.使用了unsafe的CAS操作 通过上述两点,实现非阻塞同步(乐 ...

  3. 高性能web

    http://developer.51cto.com/art/201104/255619.htm http://developer.51cto.com/art/201104/254031.htm ht ...

  4. Backward_chaining

    http://en.wikipedia.org/wiki/Backward_chaining

  5. post 相比get 有很多优点,为什么现在的HTTP通信中大多数请求还是使用get?

    好吧, 除了哲学方式的回答以外,下面是一个浏览器从业人员的看法 事实上GET 和 POST 在实践上面有非常大的区别,这两种方法在语义上面并非能互相取代. POST 是否比 GET 安全 是的, PO ...

  6. PullToRefreshListView组件的OnItemClickListener中的position下标问题

    /** * Pass-through method for {[url=home.php?mod=space&uid=91636]@link[/url] PullToRefreshBase#g ...

  7. delphi7调用java写的webservice,在调用的时候弹出“wssecurityhandler:request does not contain required security header”

    delphi7调用java编写的webservice问题我用delphi7调用java写的webservice,在调用的时候弹出“wssecurityhandler:request does not ...

  8. HDOJ(HDU) 1563 Find your present!(异或)

    Problem Description In the new year party, everybody will get a "special present".Now it's ...

  9. HDU3727--Jewel (主席树 静态区间第k大)

    Jewel Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...

  10. 护肤品总结 Skin Care (2)

    接护肤品总结(1) 面膜篇 个人不太喜欢片状面膜,所以用膏状面膜比较多. 1. Origins Drink Up-Intensive Overnight Mask 悦木之源补水睡眠面膜 牛油果油油的质 ...