当前位置:首页 » 编程语言 » pythonweb搭建

pythonweb搭建

发布时间: 2024-08-02 19:34:24

㈠ 如何用python搭建一个最简单的Web服务器

用Python建立最简单的web服务器

利用Python自带的包可以建立简单的web服务器。在DOS里cd到准备做服务器根目录的路径下,输入命令:

  • python -mWeb服务器模块[端口号,默认8000]

  • 例如:

  • python -m SimpleHTTPServer 8080

  • 然后就可以在浏览器中输入

  • http://localhost:端口号/路径

  • 访问服务器资源。
    例如:

  • http://localhost:8080/index.htm(当然index.htm文件得自己创建)

  • 其他机器也可以通过服务器的IP地址来访问。

    这里的“Web服务器模块”有如下三种:

  • BaseHTTPServer: 提供基本的Web服务和处理器类,分别是HTTPServer和BaseHTTPRequestHandler。

  • SimpleHTTPServer: 包含执行GET和HEAD请求的SimpleHTTPRequestHandler类。

  • CGIHTTPServer: 包含处理POST请求和执行CGIHTTPRequestHandler类。

㈡ python web开发用什么框架

对初学者来说,循序渐进是最重要的,我推荐学习 Flask(Welcome | Flask (A Python Microframework))

Flask 很轻,花很少的成本就能够开发一个简单的网站。非常适合初学者学习。
Flask 框架学会以后,可以考虑学习插件的使用。例如使用 WTForm + Flask-WTForm 来验证表单数据,用 SQLAlchemy + Flask-SQLAlchemy 来对你的数据库进行控制。
BTW:果壳网基于 Flask 开发的。
另外也简单介绍下其他框架:
1. Django。如楼上所说,是一个全能型框架。目前 Django 的使用面还是很广的,有学习的价值,但是不建议初学者学习,因为要学习的东西太多了,一下子难以吸收会失去兴趣。当然,Django 的目的是为了让开发者能够 快速 地开发一个网站,它提供了很多模块,其中我最喜欢的就是 admin 模块,http://your.site.com/admin 就进入了网站的后台(内置的哦~)方便地对数据进行操作,等等。。。。因此,如果对 Django 熟悉的话,papapa 一下子就写好一个网站的原型了。
2. Tornado。传说中性能高高的框架。Tornado 是一个很好的框架,支持异步处理的功能,这是它的特点,其他框架不支持。另外一点是,Tornado 的设计似乎更注重 RESTful URL。但 Tornado 提供了网站基本需要使用的模块外,剩下的则需要开发者自己进行扩展。例如数据库操作,虽然内置了一个 database 的模块(后来独立出去了,现在叫做 torndb,bdarnell/torndb · GitHub)但是不支持 ORM,快速开发起来还是挺吃力的。如果需要 ORM 支持的话,还需要自己写一层将 SQLAlchemy 和 Tornado 联系起来,而且这里还有一个坑。
BTW:知乎就是基础 Tornado 开发的。
3. Bottle。Bottle 和 Flask 都属于轻量级的 Web 框架。但是 Bottle 似乎落寞了。我觉得跟他的 API 设计有关系。个人认为 Bottle 使用起来不那么顺手,因此也用得少。这里不做太多介绍。
4. web.py。也是很轻的一个框架,使用不多,也不做介绍。
5. web2py。我看楼上都没有对这个框架做介绍。这个框架是 Google 在 web.py 基础上二次开发而来的,兼容 GAE 。性能据说很高,曾经用他来做自己的主页,感觉也还不错。缺点同样是对扩展支持不太好,需要自己进行扩展。
6. Quixote。着名的 豆瓣 就是基于 Quixote 开发的。跟上面几个框架不同,Quixote 的路由会有些特别。另外 Quixote 的性能据说也好。

㈢ (web开发)用python创建一个最简单的网站

本文,用python来创建一个最简单的网页。

1先定返洞义一个函数,用来向网站服务器发送请求:defyingyong(environ,start_response):start_response(餠OK',[('Content-Type','text/html')])return[b'<h1>HowAre!</h1>']要求网站在网页上显示粗体的HowAre!

2导入wsgi模块的子模块,用来创建服务器。fromwsgiref.simple_serverimportmake_server。

3创建服务器,IP为空,端口号为900。a=900httpd=make_server('',a,yingyong)这个服务器将调用前面的函数yingyong。

4让服务器开始运行,并长时间运行。httpd.serve_forever()forever,让服务器永远运行,除非服务器被迫关闭。服务器在哪里?就在python里面,关闭python编译器,就等于关闭了服唤世模务器。

5再访问步骤一里面的链接,就得到如下网页。这说明服务器开始运行了。刷新这个网页,就相当于重复访问这个网页。每访问一次(刷新一次),都会向服务器发送请求,在python编译器里面会有所体现。

6关闭python编译器,服务器也就关闭了,这个网页会立刻崩溃。再打开python并运行这段代码,这个网页又会立刻恢复。完整代码如下:defyingyong(environ,start_response):start_response(餠OK',[('Content-Type','text/html')])return[b'<h1>HowAre!</h1>']fromwsgiref.simple_serverimportmake_servera=900httpd=make_server('',a,yingyong)httpd.serve_forever()。

1、开始之前,请先用浏览器访问下面这个网页:l')])

return[b'<h1>HowAre!</h1>']

要求网站在网页上显示粗体的HowAre!

3、导入wsgi模块的子模块,用来创建服务器。

fromwsgiref.simple_serverimportmake_server

4、创建服务器,IP为空,端口号为900。和缓

a=900

httpd=make_server('',a,yingyong)

这个服务器将调用前面的函数yingyong。

5、让服务器开始运行,并长时间运行。

httpd.serve_forever()

forever,让服务器永远运行,除非服务器被迫关闭。

服务器在哪里?就在python里面,关闭python编译器,就等于关闭了服务器。

6、再访问步骤一里面的链接,就得到如下网页,这说明服务器开始运行了。

7、刷新这个网页,就相当于重复访问这个网页,每访问一次(刷新一次),都会向服务器发送请求,在python编译器里面会有所体现。

8、关闭python编译器,服务器也就关闭了,这个网页会立刻崩溃。

再打开python并运行这段代码,这个网页又会立刻恢复。

完整代码如下:

defyingyong(environ,start_response):

start_response(餠OK',[('Content-Type','text/html')])

return[b'<h1>HowAre!</h1>']

fromwsgiref.simple_serverimportmake_server

a=900

httpd=make_server('',a,yingyong)

httpd.serve_forever()

㈣ python 进行web 开发 怎么配置环境

Python的目前有两个版本,Python 2.7.5 和 Python 3.3.2。Python 3.x 与 2.x 不仅仅是版本的新旧的区别那么简单,Python3.x 是一个全新的东西。

1、下面的 Python 2.7.5 这个版本是 .msi 格式的,所以直接安装即可,将 Python 2.7 安装在了 E:Python 下。

然后就是配置环境变量, 具体不多说,直接附图:

㈤ Python 有哪些好的 Web 框架

1、Django框架
优点:是一个高层次Python Web开发框架,特点是开发快速、代码较少、可扩展性强。Django采用MTV(Model、Template、View)模型组织资源,框架功能丰富,模板扩展选择最多。对于专业人员来说,Django是当之无愧的Python排名第一的Web开发框架。
缺点:包括一些轻量级应用不需要的功能模块,不如Flask轻便。过度封装很多类和方法,直接使用比较简单,但改动起来比较困难。相比于 C,C++性能,Django性能偏低。模板实现了代码和样式完全分离,不允许模板里出现Python代码,灵活度不够。另外学习曲线也相对陡峭。
2、Flask框架
优点:Flask是一个Python Web开发的微框架,严格来说,它仅提供Web服务器支持,不提供全栈开发支持。然而,Flask非常轻量、非常简单,基于它搭建Web系统都以分钟来计时,特别适合小微原型系统的开发。花少时间、产生可用系统,是非常划算的选择。
缺点:对于大型网站开发,需要设计路由映射的规则,否则导致代码混乱。对新手来说,容易使用低质量的代码创建 “不良的web应用程序”。
3、Pyramid框架
优点:是一个扩展性很强且灵活的Python Web开发框架。上手十分容易,比较适合中等规模且边开发边设计的场景。Pyramid不提供绝对严格的框架定义,根据需求可以扩展开发,对高阶程序员十分友好。
缺点:国内知名度不高,高级用法需要通过阅读源代码获取灵感。默认使用Chameleon模板,灵活度没有成为一个要素。
4、web.py框架
优点:正如其名,web.py是一个采用Python作为开发语言的Web框架,简单且强大。俄罗斯排名第一的Yandex搜索引擎基于这个框架开发,Guido van Rossum认为这是最好的Python Web框架,还需要说别的吗?有事实作证、有大牛认可,用起来吧!
缺点:Web.py并未像其他框架一样保持与Python 3兼容性的最新状态。这不仅意味着缺乏对异步语法的支持,还意味着缺少对已弃用的函数的错误。此外,目前尚不清楚维护者是否有计划在Python 2到达其支持生命周期结束后保持Web.py的最新状态。
5、Tornado框架
优点:Tornado是一个基于异步网络功能库的Web开发框架,因此,它能支持几万个开放连接,Web服务高效稳定。可见,Tornado适合高并发场景下的Web系统,开发过程需要采用Tornado提供的框架,灵活性较差,确定场景后再考虑使用不迟。
缺点:Tornado 5.0改进了与Python的本机异步功能的集成。因此不再支持Python 3.3.并且Python 3.5用户必须使用Python 3.5.2或更高版本。Tornado 6.0将需要Python 3.5及更高版本,并将完全放弃Python 2支持。

㈥ python 怎么搭建简单的web服务器

利用Python自带的包可以建立简单的web服务器。在DOS里cd到准备做服务器根目录的路径下,输入命令:x0dx0apython -m Web服务器模块 [端口号,默认8000]x0dx0a例如:x0dx0apython -m SimpleHTTPServer 8080x0dx0a然后就可以在浏览器中输入x0dx0ah ttp://loca lhost:端口号/路径x0dx0a来访问服务器资源。 x0dx0a例如:x0dx0ah ttp://local host:808 0/index.h tm(当然index.htm文件得自己创建)x0dx0a其他机器也可以通过服务器的IP地址来访问。x0dx0ax0dx0a这里的“Web服务器模块”有如下三种:x0dx0ax0dx0aBaseHTTPServer: 提供基本的Web服务和处理器类,分别是HTTPServer和BaseHTTPRequestHandler。x0dx0aSimpleHTTPServer: 包含执行GET和HEAD请求的SimpleHTTPRequestHandler类。x0dx0aCGIHTTPServer: 包含处理POST请求和执行CGIHTTPRequestHandler类。

㈦ 如何用Python写一个web框架

STEP.1

我们首先得选择基于什么协议来写这种框架。我们可以选择CGI协议,或者是WSGI接口。如果使用CGI,实际上我们只是按着CGI的规范写了一个python程序,然后每次服务器收到请求,就fork一个程序来执行它,然后返回一个http文档,性能比较低下。对于WSGI,而是一个存在于服务器和应用间的接口,在WSGI之前,web应用都是依赖于服务器的,现在流行的python框架都支持WSGI接口。

STEP.2 PEP-333

这一段是PEP-333 所提供的样例代码。

def simple_app(environ, start_response):
"""Simplest possible application object"""
status = '200 OK'
response_headers = [('Content-type', 'text/plain')]
start_response(status, response_headers)
return ['Hello world! ']

这里的application被传入了两个值。

  • environ

  • start_response。
    environ是一个字典,保存了http请求的信息。
    start_response是一个函数,发送http响应。她有两个参数status 和 start_headers。

  • status必须是由状态编号和具体信息组成的字符串,必须符合RFC 2616。

  • start_headers是一个(header_name,header_value) 元组的列表元组列表。其中的hearder_name必须是合法的http header字段名。在RFC 2616, Section 4.2中有详细定义。
    当然官方还给出了类的实现。

  • def __init__(self, environ, start_response):


  • self.environ = environ


  • self.start = start_response

  • def __iter__(self):


  • status = '200 OK'


  • response_headers = [('Content-type','text/plain')]


  • self.start(status, response_headers)


  • yield "Hello world! "

  • 了解了如上信息后,基本上可以开始了。我们就到官方给的代码上进行修改吧。

    STEP.3 将路径链接到函数

    首先我们得把用户请求的路径,链接到函数。我们可以实现一个getPage方法,专门做这件事。我们所拥有的信息,只有environ['PATH_INFO']。

  • urls = [('^/index/$','func_index'),

  • ('^/comment/$','func_comment'),

  • ('^/environ/$','get_environ'),

  • ('^/post/$','post_test')]#urls是提供给app开发者来做链接的。

  • def getPage(self):

  • path = self.environ['PATH_INFO']

  • for pattern in self.urls:

  • m = re.match(pattern[0],path)#将urls元素的第0项和path进行比对,如果匹配上了,返回函数名

  • if m:

  • function = getattr(self,pattern[1])#getattr方法来得到函数

  • return function()

  • return '404 not found'#没匹配上任何东西

  • 写到这里之后,每次添加页面,就只需要在urls列表中添加一个元祖就行了。

    STEP.4 获取模版

    既然是写web app,模版肯定是得有的。这里我提供了一种getTemplate方法来做这件事。不过我只提供了变量的替换。

  • def getTemplate(self,tem_name,rep=0):

  • #这个函数返回内容,tem_name是文件名字

  • #参数rep是一个字典,默认为0

  • f = open('template/'+tem_name)

  • html = f.read()

  • if(rep!=0):

  • for to_replace in rep:

  • strinfo = re.compile('{\%s*'+str(to_replace)+'s*\%}')

  • html = strinfo.sub(rep[to_replace],html)

  • return html

  • STEP.5 POST数据的处理

    要想获取POST数据,我们得通过environ['wsgi.input']来处理。而他实际上就是系统的标准输入。

  • environ['wsgi.input'] = sys.stdin

  • 知道这点后就很好写了。

  • def getPost(self):

  • if(self.environ['REQUEST_METHOD'] == 'POST'):

  • try:

  • request_body_size = int(self.environ.get('CONTENT_LENGTH', 0))#读出content_length的值

  • except:

  • request_body_size = 0

  • request_body = self.environ['wsgi.input'].read(request_body_size) #请求的body

  • post_data = parse_qs(request_body)#parse_qs是cgi提供的方法,帮助我们处理请求

  • return post_data

  • 数据库的链接

  • import MySQLdb

  • class Model(object):

  • def __init__(self):

  • self.host = 'localhost'

  • self.port = 3306

  • self.user = 'admin'

  • self.passwd = 'admin'

  • self.db = 'xieyi'

  • def build_connect(self):

  • self.conn = MySQLdb.connect(

  • host = self.host,

  • port = self.port,

  • user = self.user,

  • passwd = self.passwd,

  • db = self.db

  • )

  • def exec_ins(self,ins):

  • cur = self.conn.cursor()

  • num = cur.execute(ins)

  • info = {}

  • if(num>0):

  • info = cur.fetchmany(num)

  • cur.close()

  • self.conn.commit()

  • return info

  • def close(self):

  • self.conn.close()

  • STEP.6 清理工作

    很多配置如果放到代码中,会增加阅读负担。于是把urls,model抽取出来。
    使得配置更加方便。



热点内容
安卓版路路通苹果版是什么 发布:2024-11-26 00:53:07 浏览:350
复苏室护士怎么配置 发布:2024-11-26 00:51:24 浏览:396
预算法探析 发布:2024-11-26 00:51:23 浏览:70
通过ftp传文件公司能发现吗 发布:2024-11-26 00:50:46 浏览:460
数据库oracle面试 发布:2024-11-26 00:47:02 浏览:201
网易数据库 发布:2024-11-26 00:39:49 浏览:810
旧电脑用什么安卓模拟器 发布:2024-11-26 00:34:41 浏览:533
印度编程员 发布:2024-11-26 00:34:29 浏览:486
mac下php编译器 发布:2024-11-26 00:25:18 浏览:863
cmcc怎么改密码 发布:2024-11-26 00:21:52 浏览:958