python制作网页服务器_十分钟上手Python开发网站服务器

2023-05-16

如何一键安装Python开发环境?如何使用Jupyter Notebook开发Flask网站服务器?跟我一起来上手Python编程,十分钟开发一个动态网站服务器程序。9e53badb17b6a0953b95e34295403d24b0a7c673.jpg

Python编程

首先请安装Anaconda软件。

登录https://www.anaconda.com官网,下载安装Individual Edition独立版,下载可能有点慢,耐心等待。8ee495e0b86d4546360d432b84fa3e5daf69bb36.jpg

下载独立版b3bc512736a58ec68dfb1f8c1c30e2e5a2f77e62.jpg

下载按钮

d27b1f906aec532687526a3924b645c394b8b7a0.jpg

根据操作系统选择

下载后直接安装。注意安装路径要选一个没有中文字符的文件夹,不要选“C:/user/王小明/anaconda”这样的文件夹,而应该选“C:/user/wangxiaoming/anaconda”这样的。

使用JupyterNotebook

首先从windows开始菜单找到Anaconda文件夹下绿色环形的Anaconda Navigator启动。如果是苹果电脑的话可以直接从应用程序里面找到它。

89762a69e4b14390aa46d36170685e74a4a59a12.jpg

Anaconda Navigator界面

然后点击图中第二个Jupyter Notebook下的Launch启动它。这会打开一个网页,看上去像下图,但实际它是个文件管理器,点击【新建】按钮就可以创建文件夹和文件。需要说明的是,默认创建的文件夹总是叫做Untitled Folder,要点击它前面的小方块勾选,然后上面就会出现【重命名】和【删除】按钮。ae14b571b78f8a074b0f6607d6140da9f44e0b93.jpg

Notebook文件管理器界面

点击【新建】,新建一个Python3文件,看到代码编写界面,每个输入框都可以撰写代码,叫做代码块。点击顶部的加号可以新建一个代码块。fda2ef44c0de13a278f9136355c7230ba8d243b3.jpg

Python编码点击【未命名】文字可以对文件名改名;点击【+】加号增加新的代码块,点击上下箭头可以把代码块上下移动顺序;输入代码print('Hello Python')后点击【运行】按钮可以运行代码,下面自动出现Hello Python字符。

安装Flask

什么是Flask?它是Python的网站服务端开发框架,简单说就是一个代码模板,可以帮助我们非常快速的开发出网站服务器软件。

直接在Notebook的代码块中输入conda install flask,点击【运行】按钮就可以自动完成Flask安装了。ae1f07c07d47ab426cb5fd100788b7ce22b73e9b.jpg

安装Flask

编写最简单网站服务器

我们直接访问Flask官方网站https://palletsprojects.com/p/flask/,直接复制页面上的代码。27d47eca55d3bd4ef604d5c81a7eaeba65c0a311.jpg

Flask官网示例代码

我们把这个代码粘贴到Notebook的代码块里面。在第一行添加%%writefile run.py,这行的意思是把这一行下面的代码保存为文件run.py。代码如下图。

%%writefile run.py

from flask import Flask, escape, request

app = Flask(__name__)

@app.route('/hello')

def hello():

name = request.args.get("name", "World")

return f'Hello, {escape(name)}!'

运行这个代码之后,可以在Notebook的文件管理器页面看到多了一个run.py文件,这就是我们保存出来的服务器代码文件。

我们注意@app.route('/')这个写法,它表示如果用户访问类似http://xxxxx.com/网站地址的话,服务器就会运行hello()下面的代码。

name = request.args.get("name", "World"),这是说,如果用户访问http://xxxxx.com/?name=Tom的地址,那么这里的name就会都表示Tom,如果用户只访问http://xxxxx.com/网站地址,那么Python就认为name是默认值Workd。怎么验证呢?下面我们把服务器运行起来。

运行服务器文件

点击加号【+】新建一个代码块,粘贴下面的代码:

import subprocess as sp  #工具,用来运行.py文件,run.py

try:

server.terminate() #防止我们重复运行run.py

except:

pass

server = sp.Popen("FLASK_APP=run.py flask run --port=8032", shell=True)

server

运行这个代码就会启动run.py服务器,会出现一行类似的文字。

你可以访问下面的网址来查看效果:

http://localhost:8032/

http://localhost:8032?name=xiaomaod583eedc7d02da09616ec19038d70868ea999d06.jpg

根据地址名字改变内容的网页

网页文件服务器

我们每天浏览的网页其实都是一个个文件,就像我们每天使用的word文件.docx一样,和我们上面用的.py文件一样。

网页文件都是.html格式的,它们都存储在网络公司的服务器上面,我们打开一个网页,就是向网络服务器请求要看一个文件。

网络服务器上有一个服务器程序,接收到用户请求之后就会读取相应的网页文件,然后发给用户观看。

我们的任务就是编写这个会读取网页文件的代码。其实很简单,只要在run.py里面加三行就可以了,如下所示。

%%writefile run.py

from flask import Flask, escape, request, send_from_directory

app = Flask(__name__)

@app.route('/hello')

def hello():

name = request.args.get("name", "World")

return f'Hello, {escape(name)}!'

@app.route('/web/') #静态文件服务器:你要哪个文件就给你哪个文件

def send_js(path):

return send_from_directory('web', path)

if __name__ == "__main__":

app.run()

运行这个代码会自动重新保存为新的run.py文件。

@app.route('/web/'),这句的意思是如果用户要访问http://xxxx.com/web/a.html地址,那么就读取web文件夹下面的a.html文件发给用户。下面的send_from_directory就是从目录文件夹下发送的意思。

但这时候我们还不能运行服务器,因为我们还没有在web文件夹下创建任何一个文件。

先在Notebook文件管理页面【新建】一个文件夹,点击Untitled Folder选框改名为web。

用下面的代码创建一个html文件,它包含了一个form表单组,在这个组里有三个元素,一个label文字是name,一个文字输入框input,还有一个按钮button。

%%writefile ./web/index.html

姓名name:


运行上面的代码块就可以在web文件夹下生成出一个index.html文件了。

再次运行下面这个代码块,它再次运行我们带有网页文件服务功能的服务器文件run.py。

import subprocess as sp  #工具,用来运行.py文件,run.py

try:

server.terminate() #防止我们重复运行run.py

except:

pass

server = sp.Popen("FLASK_APP=run.py flask run --port=8032", shell=True)

server

然后我们访问http://localhost:8032/web/index.html,就可以看到下面的效果。87ed75db0737d5fa925d0ab545ed22055e08f526.jpg

文件服务器读取的文件

随便输入任何一个名字比如zhyuzh,点击Submit提交按钮,就会出现Hello zhyuzh字样。之所以会出现这个效果,注意点击按钮后的地址栏,已经变为http://localhost:8032/hello?name=zhyuzh,所以能够正常显示问候。

但为什么会跳转到http://localhost:8032/hello?name=zhyuzh页面呢?这要注意我们的index.html文件中的form表单,它后面有一个action=/hello,就是说点击Sumbit按钮提交后就会跳转到/hello地址,而这个地址对应我们服务器文件中的@app.route('/hello')下面的代码。

更多内容

上面的代码主要实现的功能是:监听用户的地址请求,给以动态的反馈,Hello XXX,name是谁就Hello谁。

网页文件服务器,读取文件发给用户看,暂时我们只有一个web/index.html。

暂时我们还不能把用户发送来的name保存下来,所以我们还没办法实现用户注册和登录功能。要做这个该怎么办?至少要有两个技术:数据库。要能够让我们的Python服务器程序能够读取数据库里面的信息,也可以把用户发送来的信息保存到数据库。比如把用户发来的用户名和密码都保存好,下次用户再发来错误的密码时候就可以告诉他密码错了。

Cookie。这个比较难解释,简单说就是可以让我们的Python服务器程序在用户的电脑上做个记号。有什么用呢?比如说有人从电脑上发来正确的用户名和密码,我们就可以在他的电脑上做个标记,记住这就是他,这样的话,他下次再发来请求的时候我们就能从这个特殊的标记知道他是谁了,我们可以直接发送他的购物车、收藏夹、好友列表什么的给他,他不用每次都重复发用户名密码也能实现登录。

扩展资料

后续文章和更多内容,请在B站搜索【小诺同学2020】。

或者直接加入我们的【野蛮生长技术交流】QQ群获取更多资源:781785435。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python制作网页服务器_十分钟上手Python开发网站服务器 的相关文章

  • 微软为什么能转型成功?

    多租户技术架构 公有云部署 订阅收费模式 xff0c 这几个东西混在一起 xff0c 中国企业服务产业界叨叨了五六年也没叨叨清楚 我过去虽然写过无数的文章来说 xff0c 但是大家还是不理解 所以我也不说逻辑和道理了 xff0c 直接用微软
  • 初学C语言之目录操作

    文章目录 一 获取当前目录二 切换目录三 目录的创建和删除四 获取目录中的文件列表4 1 包含头文件4 2 包含的库函数4 3 数据结构 五 补充一哈5 1 access库函数5 2 stat库函数5 2 1 stat 结构体 用于存放文件
  • c语言中num =10,num/100%10 这是什么意思求详细的计算逻辑

    include int main 定义三位数num 个位数sd 十位数td 百位数hd int num sd td hd 循环所有三位数 for num 61 153 num 61 153 获取三位数字num百位上的数字 hd 61 num
  • 计算机专业实习报告范文3000字,4月计算机专业实习报告3000字

    版权声明 xff1a 以上文章中所选用的图片及文字来源于网络以及用户投稿 xff0c 由于未联系到知识产权人或未发现有关知识产权的登记 xff0c 如有知识产权人并不愿意我们使用 xff0c 如果有侵权请立即联系 xff1a 5552509
  • linux grep命令详解_Linux 上USB 调试神器lsusb命令详解

    大家好 xff0c 我是吉阿 xff0c 今天给大家介绍Linux上USB调试工具lsusb命令 USB xff0c 是英文Universal Serial Bus xff08 通用串行总线 xff09 的缩写 xff0c 是一个外部总线标
  • 先学python还是ros_如何学习Ros?

    不邀自来 题主从未有过机器人方面的学习 xff0c 因此 xff0c 我邀请了从其他部门转岗过来的RD小哥过来回答这个问题 xff0c 小哥在来无人配送之前是美团基础研发的同学 xff0c 以前没有学过ROS xff0c 也没有做过机器人
  • matlab验证fpga,FPGA与MATLAB数据交互高效率验证算法——仿真阶段

    之前博文是对基本设计技巧的总结和一些小设计随笔 xff0c 内容有点杂 xff0c 缺乏目的性 本来后续计划设计几个小项目 xff0c 但导师的任务比较紧 xff0c 所以为了提高效率 xff0c 后续博客会涉及到很多算法方面的设计与验证的
  • 如何自己去写一个鼠标驱动_罗技鼠标你终于让我心态崩了(始末)

    我 xff0c 计算机专业毕业 xff0c 一个间歇性强迫症患者 它 xff0c 知名品牌 xff0c 静音方便 xff0c 一个还算不错的外设 我和它 xff0c 缠斗了1日 xff0c 最终稀了糊涂的赢了 事情的起因是这样的 xff1a
  • 可能是全网最简单的 OpenStack 安装教程

    OpenStack 因为架构复杂 xff0c 配置较多 xff0c 一向以安装部署过程困难闻名 虽然 OpenStack 社区前后涌现出了很多的自动化部署工具 xff0c 但是对于普通用户 xff0c 特别是新人来说 xff0c 上手仍然有
  • 第一章——绪论

    在开始西瓜书系列之前 xff0c 首先声明一下 xff1a 作者并不是一个专业的程序员 xff0c 只是跨界而来 xff0c 想看看所谓的机器学习究竟是一片怎样的风景 一千个人眼中有一千个哈姆雷特 同样的 xff0c 面对同一本书 xff0
  • 基于小波神经网络的短时交通流量时间序列预测程序_基于小波神经网络的数据中心KPI预测...

    随着软件和微服务的发展 xff0c 智能运维越来越受到人们的重视 在大量的运维数据里 xff0c 最不可忽视的就是各种关键性能指标数据 Key Performance Indicators xff0c KPI xff0c 它们在数学上都可以
  • 树莓派 PHP白屏,树莓派 vnc 黑屏解决办法

    由于我最开始安装系统是选择使用电视做为屏幕安装的 xff0c 以至于我遇到了这样的问题 xff0c 不是所有人都会遇到这个问题的 启动 vnc 后 xff0c 客户端 Vnc viewer 上却显示 Cannot currently sho
  • object转date类型_JavaScript 类型转换与操作符

    一 xff1a typeof 操作符 1 操作符来检测变量的数据类型 2 undefined与null null是一个只有一个值的特殊类型 表示一个空对象引用 undefined 是一个没有设置值的变量 typeof 检测 null 返回是
  • 机器人学中的状态估计pdf_《机器人学中的状态估计》-04非线性高斯系统的状态估计...

    引言 双目相机估计深度x的状态 xff1a 贝叶斯 和 MAP 贝叶斯 xff1a 给定先验 gt 采样 gt 采样 gt 计算后验 通过蒙特卡洛仿真 xff0c 我们能够计算出确切的贝叶斯后验 xff0c 但在实际的问题中却很难这样处理
  • 在主线程执行_Java中的主线程

    概览 前段时间有同事提到了主线程这个名词 xff0c 但当时我们说的主线程是指Java Web程序中每一个请求进来时处理逻辑的线程 当时感觉这个描述很奇怪 xff0c 所以就来研究下这个主线程的确切语义 Java提供了内置的多线程编程支持
  • docker linux 快速开窗口_Ubuntu中使用Docker/LXC迅速启动一个桌面系统

    Docker 是 dotCloud 最近几个月刚宣布的开源引擎 xff0c 旨在提供一种应用程序的自动化部署解决方案 xff0c 简单的说就是 xff0c 在 Linux 系统上迅速创建一个容器 类似虚拟机 并在容器上部署和运行应用程序 x
  • threadx 信号量 应用_ThreadX 硬实时嵌入式操作系统

    系统特点 可靠性 xff1a 现场验证 最高的开发标准经T VS d的功能安全认证 完全符合MISRA C xff1a 2012的要求代码质量 稳定性 xff1a 提供内核 内存保护机制 xff0c 内核体积小 同时驱动程序 网络协议 文件
  • linux键盘触摸板失灵,ubuntu linux 触控板失灵的解决方案

    这几天研究内核的模块机制 xff0c 接触到了一些关于模块的操作命令 xff0c 比如lsmod命令可以列出内核中已经安装的模块 xff0c insmod命令可以安装一个指定的模块 xff0c rmmod可以删除一个指定的模块 也是处于好奇
  • lacp笔记

    1 LACP协议的作用 LACP的作用是根据系统本地信息以及与对端系统动态交换的信息 xff0c 自动形成链路的汇聚或解汇聚 xff0c 并控制链路的报文收发状态 没有运行LACP的聚合 xff0c 称之为手工聚合 xff0c 由管理员指定
  • 鸿蒙系统屏幕显示,鸿蒙系统 OLED屏幕驱动

    Hi3861 OLED驱动 可以看附件视频详细说明 Hispark WiFi开发套件又提供一个oled屏幕 xff0c 但是鸿蒙源码中没有这个屏幕的驱动 xff0c 我们需要自己去移植 经过一晚上的调试 xff0c 现在终于在鸿蒙系统上实现

随机推荐