python服务器端开发(教你如何搭建简易网站:python开发web服务器)
老铁们,大家好,相信还有很多朋友对于python服务器端开发和教你如何搭建简易网站:python开发web服务器的相关问题不太懂,没关系,今天就由我来为大家分享分享python服务器端开发以及教你如何搭建简易网站:python开发web服务器的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!
python web开发用什么工具
1、Flask
Flask是一个轻量级的web框架,可以快速构建web应用程序。Flask的优点之一是其灵活性,因为它允许您在自己的代码项目中实现所需的定制。Flask适合小型项目和初学者,因为它的习曲线较低。
2、Django
Django是一个功能强大的Web框架,适合大型项目。它包括ORM,模板引擎,管理站点和完整的认证系统等内置功能。
Django的一个独特的优点是它的强大的管理站点,允许您在不编写任何HTML的情况下构建一个完整的后台管理应用程序。 Django具有强大的社区支持,因此可以轻松找到有用的示例代码和插件。
3、Pyramid
Pyramid是一个可伸缩的Web框架,旨在处理大型应用程序。 Pyramid具有高度定制的模式,使其在Web应用程序的多种应用中具有广泛的适用性。 Pyramid的一个重要优势是其可扩性,允许您随着项目的不断发展进行逐步构建。
4、Bottle
Bottle是另一个轻量级的Web框架,适用于小型项目。 Bottle提供了一个快速而灵活的方法来构建Web应用程序,但它并不提供预定义的模板。
如果您需要快速启动一个小型Web应用程序并掌握它的完全控制权,则Bottle是一个不错的选择。
5、Tornado
Tornado是一个基于异步事件循环的Web框架,适用于需要高性能的应用程序。
Tornado提供了一种非阻塞的方式来处理Web请求和其他事件,这可以大大提高应用程序的吞吐量。Tornado还包括内置的Web服务器,可以轻松扩展。
总的来讲,Python在web开发领域有许多优秀的框架和工具可供选择。灵活性和可扩展性是Python
web开发的明显优势,而这些优势正吸引着越来越多的开发者转向Python。
python做web开发好吗
当然!python这门优美的语言是非常适合Web开发的。
使用Python进行Web开发的优势:
第一、易于使用和阅读
有几个因素可以简化python在Web开发中的使用:
低入门门槛:python与我们日常生活中使用的英语相似,语法的简单性使您可以处理复杂的系统,并确保所有元素之间都具有明确的关系;因此,更多的新手程序员可以学习该语言并更快地加入编程社区。
良好的可视化:效果通过使用不同的图和图表,可以以易于理解的格式表示数据。它们是可视化呈现和理解数据的有效方法,Web开发公司利用python库来可视化数据并创建清晰且易于理解的报告。
易于阅读:python非常易于阅读,因此开发人员通常在理解由其他程序员编写的代码时不会遇到任何问题,这可以促使从事同一项目的开发人员之间的通信效率更高。
第二、异步编码
由于没有死锁或研究争执或任何其他令人困惑的问题,因此使用python编写和维护异步代码无需花费太多精力。此类代码的每个单元分别运行,从而使您能够更快地处理各种情况和问题。
第三、较少限制的编程方法
与其他编程语言对比,python具有较少限制的编程方法。它具有多种范例,可以支持多种编程风格,包含过程性、面向对象和功能性。这使python成为初创公司的绝佳语言,因为项目可能需要随时更改方法。
第四、企业应用集成
python是企业软件应用程序的流行选择,这在很大程度上要归功于python与传统上用于企业开发的其他语言的流畅集成。
python直接与Java、C++或C代码进行调用,从而可以对大多数常用协议和数据格式进行大量的过程控制和实现。除此之外,它还可以用于组装基础结构的新旧片段,这是复杂移动应用程序中的典型情况。
第五、可以使用python框架快速进行Web开发
python的另一个优点是它具有许多简化开发过程的框架,根据您的工作,可能需要不同的框架。
第六、科学计算库方便
有各种各样的软件包和库可用于开发科学和数字应用程序,以及工具包,单独的成像库以及许多其他工具。
教你如何搭建简易网站:python开发web服务器
Python中有数不清的Web框架,从基本的微小架构到完整的架构,它们自有各自的优点。那么你准备使用它来做一些web开发,但在探讨细节之前,让我们从头开始。
目标
用已有的丰富图片资源建一个看图网站
条件开发语言:python3
库:flask:一个开源的python web服务器框架
jinja2:flask默认的模板引擎
编辑器:推荐pycharm
一个最简单的web服务器python给我们提供了一个接口:WSGI:Web Server Gateway Interface
它只要求Web开发者实现一个函数,就可以响应HTTP请求。而不用触到TCP连接、HTTP原始请求和响应格式。
下面实例一个最简单的web应用:
# hello.pydef application(environ, start_response):
start_response('200 OK', [('Content-Type','text/html')]) return [b'<h1>Hello, Python web!</h1>']# server.py#从wsgiref模块导入:from wsgiref.simple_server import make_server#导入我们自己编写的application函数:from hello import application#创建一个服务器,IP地址为空,端口是8000,处理函数是application:httpd= make_server('', 8000, application)
print('Serving HTTP on port 8000...')#开始监听HTTP请求:httpd.serve_forever()environ:一个包含所有HTTP请求信息的dict对象;
start_response:一个发送HTTP响应的函数。
将两个脚本放在同一目录下,运行server.py,访问 http://127.0.0.1:8000就能看到效果了。
处理url其实web应用,就是对不同url的处理。
我们将hello.py进行修改
def application(environ, start_response):
method= environ['REQUEST_METHOD']
path= environ['PATH_INFO'] if method=='GET' and path=='/': return handle_home(environ, start_response) if method=='POST' and path='/signin': return handle_signin(environ, start_response)
...这样就会处理两个url,’/’和’/signin’
当然你可以这么一直写下去?如果你不嫌累的话。
使用模板既然上面的方法太累太慢,那我们学点高级的:
flask
看代码
from flask import Flaskfrom flask import request
app= Flask(__name__)@app.route('/', methods=['GET','POST'])def home():
return'<h1>Home</h1>'@app.route('/signin', methods=['GET'])def signin_form():
return'''<form action="/signin" method="post">
<p><input name="username"></p>
<p><input name="password" type="password"></p>
<p><button type="submit">Sign In</button></p>
</form>'''@app.route('/signin', methods=['POST'])def signin():
#需要从request对象读取表单内容:
if request.form['username']=='admin' and request.form['password']=='password': return'<h3>Hello, admin!</h3>'
return'<h3>Bad username or password.</h3>'if __name__=='__main__':
app.run()注意,这个是单文件。
来分析这个脚本:
Flask通过Python的装饰器在内部自动地把URL和函数给关联起来。
启动运行后,我们访问
‘/’,看到的页面是一个“HOME”单词
‘/signin’,此刻是通过GET访问,看到的是一个表单,填写’admin’和’password’,点击登录——>
‘/signin’,此刻是通过POST访问,看但的是Hello, admin!或者Bad username or password.
对于不了解GET与POST和HTML表单的同学,推荐去学习html基础。
但这样还是有些不灵活,用户访问看到的内容需要全部写出来,不能复用,太麻烦
使用模板引擎模板解决了我们上面的问题。先看一段代码
from flask import Flask, request, render_templateimport os
app= Flask(__name__)@app.route('/', methods=['GET','POST'])def home():
path='/'
all_file= os.listdir(path) return render_template('home.html',all_file= all_file)if __name__=='__main__':
app.run()这里读取了根目录下所有文件的名字,将其传给html模板页面
然后,在.py的同目录下建立目录templates,这里存放的是我们的模板,模板的特殊在于可以使用python指令及变量在html里
home.html
{% for i in all_file%}<a rel="external nofollow" href="/page/{{ i}}">{{ i}}</a>{% endfor%}{%%}中写的是指令
{{}}中写的是变量
所以最终的结果是,会生成多个标签,标签的名字就是目录名。
以上基础教程参照廖雪峰。
那么,基础已经将完了,接下来就会是成品了:
成品用我们上次爬取的图片来建站,good idea!
这里在.py脚本同目录下建立一个static目录存放图片。(图片放在.py所在目录外层会链接不到)
#beautiful_pic.pyfrom flask import Flaskfrom flask import requestfrom flask import render_templateimport os
app= Flask(__name__)#显示所有文件夹@app.route('/',methods=['GET','POST'])def list_all():
path='./static/mzitu/'
all_pic= os.listdir(path) return render_template('welcome.html',all_pic= all_pic)#具体展示图片@app.route('/<path>',methods=['GET','POST'])def list_pic(path):
#错误链接无法找到图片目录就提示错误链接
if(path not in os.listdir('./static/mzitu/')): return render_template('error.html')
pic_path='./static/mzitu/'+ path
all_pic= os.listdir(pic_path) return render_template('pic.html',title= path,all_pic= all_pic)if __name__=='__main__':#port为端口,host值为0.0.0.0即不单单只能在127.0.0.1访问,外网也能访问
app.run(host='0.0.0.0',port='2333')然后是模板文件
welcome.html
<!DOCTYPE html><html lang="en"><head>
<meta charset="UTF-8">
<title>欢迎来到福利页面</title></head><body>
{% for i in all_pic:%}<a rel="external nofollow" href="/{{i}}">{{i}}</a>
<br><br>
{% endfor%}</body></html>pic.html
<!DOCTYPE html><html lang="en"><head>
<meta charset="UTF-8">
<title>{{ title}}</title></head><body>
{% for i in all_pic%}<img src="./static/mzitu/{{title}}/{{i}}" alt="{{i}}">
<br>
{% endfor%}</body></html>error.html
<!DOCTYPE html><html lang="en"><head>
<meta charset="UTF-8">
<title>出错了</title></head><body>
你要访问的页面不存在...<br>
<a rel="external nofollow" href="/">点此返回首页</a></body></html>
END,本文到此结束,如果可以帮助到大家,还望关注本站哦!