返回顶部
首页 > 资讯 > 服务器 >python开发web服务器——搭建简易
  • 801
分享到

python开发web服务器——搭建简易

简易服务器python 2023-01-31 06:01:20 801人浏览 泡泡鱼
摘要

转自:Http://blog.csdn.net/baidu_35085676/article/details/69807145?%3E 目标 用已有的丰富图片资源建一个看图网站 条件 开发语言: python3 库: flask :一

转自:Http://blog.csdn.net/baidu_35085676/article/details/69807145?%3E

目标

用已有的丰富图片资源建一个看图网站

条件

开发语言:

python3

库:

flask :一个开源python WEB服务器框架
jinja2:flask默认的模板引擎

编辑器:

推荐PyCharm

一个最简单的web服务器

Python给我们提供了一个接口:WSGI:Web Server Gateway Interface
它只要求web开发者实现一个函数,就可以响应HTTP请求。而不用触到tcp连接、HTTP原始请求和响应格式。
下面实例一个最简单的web应用:

# hello.py

def 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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 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)
...
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

这样就会处理两个url,’/’和’/signin’
当然你可以这么一直写下去…如果你不嫌累的话。

使用模板

既然上面的方法太累太慢,那我们学点高级的:
flask

看代码

from flask import Flask
from 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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

注意,这个是单文件。
来分析这个脚本:
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_template
import 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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

这里读取了根目录下所有文件的名字,将其传给html模板页面

然后,在.py的同目录下建立目录templates,这里存放的是我们的模板,模板的特殊在于可以使用python指令及变量在html里

home.html

{% for i in all_file %}
    <a href="/page/{{ i }}">{{ i }}</a>
{% endfor %}
  • 1
  • 2
  • 3

{% %} 中写的是指令
{{ }} 中写的是变量

所以最终的结果是,会生成多个标签,标签的名字就是目录名。

以上基础教程参照廖雪峰。

那么,基础已经将完了,接下来就会是成品了:

成品

用我们上次爬取的图片来建站,Good idea!
这里在.py脚本同目录下建立一个static目录存放图片。(图片放在.py所在目录外层会链接不到)

#beautiful_pic.py
from flask import Flask
from flask import request
from flask import render_template
import 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')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

然后是模板文件
welcome.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>欢迎来到福利页面</title>
</head>
<body>
    {% for i in all_pic: %}
        <a href="/{{i}}">{{i}}</a>
        <br><br>
    {% endfor %}
</body>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

error.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>出错了</title>
</head>
<body>
    你要访问的页面不存在...
    <br>
    <a href="/">点此返回首页</a>
</body>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

最后成品网站在这http://www.flycold.cn/
端口为随机端口,范围在2000-2100之中,相信大家都能找到吧。
如果外网还是无法访问请关闭防火墙!!
最后一句:本节只是给大家一个示范,python如何写web服务器,个人感觉比apache+
PHP有趣得多!


--结束END--

本文标题: python开发web服务器——搭建简易

本文链接: https://lsjlt.com/news/190188.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python开发web服务器——搭建简易
    转自:http://blog.csdn.net/baidu_35085676/article/details/69807145%3E 目标 用已有的丰富图片资源建一个看图网站 条件 开发语言: python3 库: flask :一个...
    99+
    2023-01-31
    简易 服务器 python
  • Python搭建简易HTTP服务(3.x
    原文转载地址:http://www.cnblogs.com/91allan/p/4889167.html 废话不多说,我们工作时经常会用到需要HTTP服务,如果不想搞那些复杂的Apache、IIS服务器等,这时我们就可以用python...
    99+
    2023-01-31
    简易 Python HTTP
  • python搭建简易HTTPServer
    有时需要在电脑间(不同os也可以)共享文件,用python搭建一个web server是一个不错的选择。只需要安装python即可。 比如,我在IP为192.168.191.128的主机上需要共享一个目录叫做riacn-code,...
    99+
    2023-01-31
    简易 python HTTPServer
  • 如何搭建简易DNS服务器
    如何搭建简易DNS服务器,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。简易DNS服务器domain name server,dns协议,其实现软件主要是bind.bind软...
    99+
    2023-06-05
  • WEB开发中如何搭建HTTP服务器
    本篇文章给大家分享的是有关WEB开发中如何搭建HTTP服务器,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。HTTP服务器因tomcat处理静态...
    99+
    2024-04-02
  • node.js怎么搭建简单web服务器
    今天小编给大家分享一下node.js怎么搭建简单web服务器的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一...
    99+
    2022-12-01
    node.js web服务器
  • 搭建Go语言开发环境的简易指南
    在现代软件开发领域中,Go语言(又称Golang)作为一种快速、灵活且高效的编程语言,受到了越来越多开发者的青睐。它拥有强大的性能、简洁的语法和丰富的标准库,适用于各种不同规模的项目开...
    99+
    2024-02-25
    环境 go语言 安装 标准库
  • python怎么搭建web服务器
    在Python中搭建一个简单的Web服务器可以使用内置的http.server模块。下面是一个基本的示例: import http....
    99+
    2023-10-24
    python 服务器
  • python web 开发与 Node.js + Express 创建web服务器入门
    目录 1. Node.js + Express 框架简介 2  Node.js + Express 和 Python 创建web服务器的对比 3 使用 Node.js + Express 创建web服务器示例 3.1 Node.js + E...
    99+
    2023-09-05
    python 网络 Node.js Express
  • Python WEB开发环境搭建及配置四
       在Centos6.4里已经内置Python2.6.6,觉得版本低的同学可以对此进行升级,对于最新版本的编译安装我将放到后面的博文里详细描述,下面是一些Python常见配置1.环境变量的设置(默认已设好)#env#echo $PATH...
    99+
    2023-01-31
    环境 Python WEB
  • 如何使用node.js搭建简单web服务器
    这篇文章给大家分享的是有关如何使用node.js搭建简单web服务器的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。准备首先,需要安装nodejs,这个可以去官网下载,目前我本地安...
    99+
    2024-04-02
  • 怎么使用node.js搭建简单web服务器
    这篇文章主要介绍“怎么使用node.js搭建简单web服务器”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用node.js搭建简单web服务器”文章能帮助大家解决问题。准备首先,需要安装nod...
    99+
    2023-06-17
  • Python 搭建Web站点之Web服务器与Web框架
    之前用 Django 做过一个小的站点,感觉Django太过笨重,于是就准备换一个比较轻量级的 Web 框架来玩玩。Web.py 作者已经挂掉,项目好久没有更新,所以不准备用它。而 Flask 也是一个成熟...
    99+
    2022-06-04
    框架 站点 服务器
  • 云服务器搭建web
    云服务器是一种虚拟的、基于互联网的计算资源,可以通过互联网进行远程管理和应用程序部署。以下是几个步骤,用于搭建一个Web服务器,使其满足你的需求: 选择虚拟服务器:首先,你需要选择一个可用于托管云服务的虚拟服务器。可以选择使用公有云服务...
    99+
    2023-10-26
    服务器 web
  • flask web开发环境搭建(Mac
    写在最前面 11月末和这个12月都在折腾flask,想的是能够用web框架去从后端写一个网站出来,当中学习积累的时间有点多,我又不怎么喜欢学到哪儿写到哪儿,所以就慢慢写好了。应该会分成几个系列写。 这篇主要讲的是flask 开发环境的搭建...
    99+
    2023-01-31
    环境 flask web
  • nodejs 搭建简易服务器的图文教程(推荐)
    www文件夹下 template文件夹下 server.js代码: const express=require('express'); const static=require('express-...
    99+
    2022-06-04
    简易 图文 服务器
  • nodejs如何创建简易web服务器与文件读写
    小编给大家分享一下nodejs如何创建简易web服务器与文件读写,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!web服务器至少有...
    99+
    2024-04-02
  • 云服务器搭建web服务器
    云服务器是一种虚拟的、可伸缩的服务器,通常用于在云端托管应用程序。它具有高性能、高可用性和高可扩展性,可以快速地为用户提供可靠的云计算服务。如果你想搭建一个云服务器,可以考虑以下步骤:1.选择一家云服务器提供商:选择一家有良好声誉和口碑的云...
    99+
    2023-10-25
    服务器 web
  • Eclipse中Python开发环境搭建简单教程
    一、背景介绍   Eclipse是一款基于Java的可扩展开发平台。其官方下载中包括J2EE方向版本、Java方向版本、C/C++方向版本、移动应用方向版本等诸多版本。除此之外,Eclipse还可以通过安装...
    99+
    2022-06-04
    简单 环境 教程
  • 用Python建立最简单的web服务器
    第一个python Web程序——简单的Web服务器。 与其它Web后端语言不同,Python语言需要自己编写Web服务器。 如果你使用一些现有的框架的话,可以省略这一步; 如果你使用Python CGI编程的话,也可以省略这一步...
    99+
    2023-01-31
    最简单 服务器 Python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作