首页 > 编程语言 > 详细

Python WEB框架的介绍

时间:2020-05-02 21:42:40      阅读:57      评论:0      收藏:0      [点我收藏+]

Python web框架
  - 自己实现socket
    Tornado
  - 基于wsgi
    wsgi.run(ip.port)
    Django

自己开发web框架:
  基于wsgi

 1 from wsgiref.simple_server import make_server
 2 
 3 def RunServer(environ,start_response):
 4     start_response(200 OK,[(Content-Type,text/html)])
 5     return <h1>Hello,web!</h1>
 6     
 7 if __name__ == __main__:
 8     httpd = make_server(‘‘,8000,RunServer)  #  IP,端口,函数名
 9     
10     print(Serving HTTP on port 8000)
11     httpd.server_forever()  #  等待请求到来 ————while true: socket.accept()

但是这个程序不能直接在Python3使用,出现以下情况

  1、不是server_forever() 是serve_forever
  2、然后就弹出错误,返回的要是byte类型,所以我把‘<h1>Hello,web!</h1>‘变成b‘<h1>Hello,web!</h1>‘也不行,
  之后我又使用 ret=b‘<h1>Hello,web!</h1>‘ 然后 return ret 的方法,也不行, 补充;可以使用 ret.encode(‘gbk‘),这样也可以
  最后 我使用 ret = b‘<h1>Hello,web!</h1>‘ 然后 return [ret] 就可以了 ,这个方法是网上找的,原理不明...
  作者貌似也不知道为什么 原地址:https://www.cnblogs.com/Dmail/p/11607378.html
  3、极端的方法:错误时,显示 xx\wsgiref\handlers.py 出错,self.write(data),跳转到该行,然后在这行的前面加上data = data.encode(),就可以直接 return ‘<h1>Hello,web!</h1>‘了

MVC/MTV 目录的归类

  处理用户请求       放置HTML模板        操作数据库
  Controllers           Views                       Modals              CVM - MVC

        Views                  Template                  Modals              VTM - MTV

Django -- MTV

技术分享图片
 1 from wsgiref.simple_server import make_server
 2 from controllers import home
 3 
 4 # def index():                                # 如果需要处理的用户请求很多,可以放到另外的地方 -- controllers 里的 XX.py
 5 #     return ‘<h1>index</h1>‘
 6 # def login():
 7 #     return ‘<h1>login</h1>‘
 8 
 9 urlpatterns = [
10     (/index,home.index),
11     (/login,home.login)
12 ]
13 
14 def RunServer(environ, start_response):
15     start_response(200 OK, [(Content-Type, text/html)])
16     # 获取用户的URL,environ,封装了用户的所有请求内容
17     # 路由系统
18     url = environ[PATH_INFO]
19 
20     func=None
21     for item in urlpatterns:
22         if item[0] == url:
23             func = item[1]
24             break
25 
26     if func:
27         ret = func()
28     else:
29         ret = b<h1>404</h1>
30 
31     return [ret]
32 
33 
34 if __name__ == __main__:
35     httpd = make_server(‘‘, 8000, RunServer)  # IP,端口,函数名
36 
37     print(Serving HTTP on port 8000)
38     httpd.serve_forever()  # 等待请求到来 ————while true: socket.accept()
主程序
技术分享图片
 1 import time
 2 
 3 def index():                          #  如果想要使用HTML模板的话可以直接使用
 4     f = open(views/03.html,encoding=utf-8)
 5     data = f.read()
 6     data=data.replace(&&t&&,str(time.time()))     #  如果想要把里面的内容替换成数据库取出来的内容
 7     data=data.encode(gbk)
 8     return data
 9 def login():
10     return b<h1>login</h1>
Controllers
技术分享图片
1 <h1>&&t&&</h1>
Views

 


其中,views如果没有需要替换的 可以直接用 open(xx,‘rb‘) 以二进制直接读取,
如果其中内容需要替换,则需要先用open(xx,encoding=‘utf-8‘) 读出(不然等下转码的时候可能出现问题),
然后进行替换 data=data.replace(x1,x2) x1替换成x2 然后 data = data.encode(‘gbk‘) return data

Python WEB框架的介绍

原文:https://www.cnblogs.com/otome/p/12819489.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!