python web开发基础

news2025/1/21 22:01:57

网站是存储在服务器上的文件,服务器是托管网站的计算机。这些服务器连接到一个称为 Internet 的网络。访问这些网站的计算机称为“客户端”。

要访问网站需要知道其IP地址,IP 地址是一串唯一的数字。每个设备都有一个 IP 地址。可以在控制台cmd输入命令ipconfig获取自己的ip。也可以使用其 IP 地址访问网站,但大多数使用域名或通过搜索引擎访问网站。

前端(客户端)是用户看到并与之交互的网站或软件的一侧。

后端(服务器端)是在使用 Internet 时看不到的一侧。

CMS是一个Web 应用程序或一系列用于创建和管理 Web 内容的程序,CMS 通常用于电子商务和博客。​​​​​​​

 Web 开发:构建、创建和维护网站。Web开发可以分为两种方式: 前端开发,后端开发。

前端开发:用户直接交互的网站部分称为前端, 它也被称为应用程序的“客户端”。

后端开发:后端是网站的服务器端。 它是用户无法看到和交互的网站部分。 它是不与用户直接接触的软件部分。 它用于存储和排列数据。

图来源: Web Development - GeeksforGeeks

构建 Web : HTTP 请求和响应、客户端(通常是 Web 浏览器)和服务器(Web 服务器),例如Nginx和Apache,HTML、 CSS和JavaScript。

 图来源:A complete guide to web development in Python

网络安全是保护数据、网络和计算机免受有恶意行为者希望找到网站中的漏洞以暴露私人信息、窃取数据和崩溃服务器。

Web 应用程序框架 或简称“Web 框架”是一种软件框架,旨在支持 Web 应用程序的开发,包括 Web 服务、Web 资源和 Web API。 简而言之,框架是帮助您更快、更智能地开发应用程序的库。

Python Web 框架仅用于服务器端技术的后端,有助于 URL 路由、HTTP 请求和响应、访问数据库和 Web 安全。

超文本传输​​协议 (HTTP) :客户端和服务器之间的请求-响应协议工作。 ​​​​​​​它是一组规则(一种协议),用于定义应如何通过 Internet 发送消息。它允许您在网站页面和网站之间跳转。当您在 Web 浏览器中键入网站或通过搜索引擎搜索某些内容时,HTTP 提供了一个框架,以便客户端(计算机)和服务器在通过 Internet 相互发出请求和响应时可以使用相同的语言。它本质上是你和互联网之间的翻译器——它读取你的网站请求,读取从服务器发回的代码,并以网站的形式为你翻译。

  1. 你在浏览器输入网址http://xxxx.com/xxxx。
  2. 你的设备和服务器建立了TCP连接。
  3. 你的浏览器向服务器发送HTTP 请求。
  4. 服务器接收 HTTP 请求并对其进行解析。
  5. 服务器以HTTP 响应进行响应。
  6. 你的计算机接收、解析并显示响应。

HTTPS 代表安全的超文本传输​​协议。从根本上说,HTTPS 与 HTTP 是相同的协议,但增加了通信安全的含义。 HTTPS 由通过加密连接发送的常规 HTTP 组成。通常,此加密连接由 TLS 或 SSL 提供,它们是加密协议,可在信息通过网络发送之前对其进行加密。

两种 HTTP(超文本传输​​协议)请求方法: GET 和 POST 请求

  1. GET :从服务器请求数据。
  2. POST :将要处理的数据提交给服务器。

使用 Python 进行 Web 开发

一、前端

1、构建网站的基础HTML + CSS

HTML 定义网页结构的基本技术,用于指定 Web 内容是否应被识别为段落、列表、标题、链接、图像、多媒体播放器、表单或许多其他可用元素之一,甚至是定义的新元素。元素是开始标签,后跟内容,然后是结束标签。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>My test page</title>
  </head>
  <body>
    <p>This is my page</p>
  </body>
</html>

css它为网站添加了排版、颜色和布局等设计元素,以改善网站的整体“外观”。

.box {
  background-color: #567895;
}

h2 {
  background-color: black;
  color: white;
}

2、Javascript向网站添加功能

Javascript添加动画、在某些页面中自动执行任务以及添加可增强用户体验的交互功能。

Javascript是一种脚本或编程语言,可在网页上实现复杂的功能 - 每次网页所做的不仅仅是坐在那里并显示静态信息 - 显示及时的内容更新、交互式地图、动画 2D/ 3D 图形等。它是标准 Web 技术的第三层 。

const para = document.querySelector('p');

para.addEventListener('click', updateName);

function updateName() {
  const name = prompt('Enter a new name');
  para.textContent = `Player 1: ${name}`;
}

3前端框架构建一个功能齐全的全栈 Web 应用程序。前端框架有React、Angular、Vue.js、Ember.js、jQuery等。

二、Python Web 开发框架最流行的是:Django 和 Flask。

1、Flask是一个简约和轻量级的 Web 框架,只提供构建应用程序所需的组件。对独特的系统更加开放。开发人员可以随心所欲地创建后端系统,但他们可能不会以这种方式使用最佳实践。使用Flask的公司有Netflix、Linkedin 和 Uber 等。Flask基于Werkzeug WSGI工具包和Jinja2模板引擎。两者都是Pocco项目。

jinja2是Python的一个流行的模板引擎。Web模板系统将模板与特定数据源组合以呈现动态网页。

Flask通常被称为微框架。 它旨在保持应用程序的核心简单且可扩展。Flask没有用于数据库处理的内置抽象层,也没有形成验证支持。相反,Flask支持扩展以向应用程序添加此类功能。

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello_world():
    return "<p>Hello, World!</p>"

2、Django是一个 Python Web 框架,它提供了一个开源的高级框架,快速、安全且可扩展,提供许多特性和功能,例如 Web 模板引擎、帐户授权和身份验证。Django 更加封闭,鼓励开发人员以“Django 方式”做事。虽然这可能会让人感到限制,但这也意味着开发人员更有可能一开始就正确地做事。使用 Django 的最大公司有 Instagram、Dropbox、Pinterest 和 Spotify。

Django 为所有内容提供内置功能,包括 Django 管理界面、默认数据库 - SQLlite3 等。当您构建网站时,您总是需要一组类似的组件:一种处理用户的方法身份验证(注册、登录、退出)、网站的管理面板、表单、上传文件的方式等。Django 为您提供了现成的组件供您使用,也可用于快速开发。 ​​​​​​​

Django 基于 MVT(模型-视图-模板)架构。 MVT 是一种用于开发 Web 应用程序的软件设计模式。

模型 :模型将充当数据的接口。 它负责维护数据。 它是整个应用程序背后的逻辑数据结构,以数据库(一般是MySql、Postgres等关系型数据库)为代表。

视图 :视图是用户界面——当你渲染一个网站时你在浏览器中看到的。 它由 HTML/CSS/Javascript 和 Jinja 文件表示。

模板 :模板由所需 HTML 输出的静态部分以及描述如何插入动态内容的一些特殊语法组成。

三、数据库

数据库负责存储、组织和处理数据,以便服务器请求可以检索这些数据。数据层是一个庞大的信息仓库。 它包含一个 数据库存储库 ,该存储库从前端到后端捕获和存储信息。

  • MySQL 是一个开源的关系数据库管理系统,提供多用户访问并支持多存储引擎。

  • MongoDB 易用性和处理大量数据的速度快。 它是一个开源的、面向对象的 NoSQL 数据库,具有高度可扩展性,并且在处理非结构化数据方面非常高效。

四、服务器

服务器是构成你的计算机的硬件和软件。服务器负责发送、处理和接收数据请求。它们是数据库和客户端/浏览器之间的中介。实际上,浏览器会告诉服务器“我需要这个信息”,服务器会知道如何从数据库中获取该信息并将其发送给客户端。

 web服务器可以是apache、NGINX等服务器,负责处理各种静态文件和缓存目的,还可以将服务器用作负载平衡器。

nginx

nginx是一个http服务器,采用事件驱动的异步非阻塞处理方式框架,nginx三个核心功能:静态服务器、反向代理、负载均衡。当流量增多,为提高性能,使用nginx可以将这些请求分配到多个服务器,还提供安全性和缓存。 前端的users通过不同app/外部网页把这些请求发到nginx,通过nginx把请求进行反向代理,代理到后端应用服务器/web服务器上,再通过服务器的应用访问数据库,最后把请求结果返回给users.

 

WSGI

 ​​​​​​​Web 服务器必须与 Python 应用程序交互,需要一个中介来执行 Web 服务器和 Python 应用程序之间的交互。Web 服务器和 Python 应用程序之间进行通信的标准是 WSGI,Web 服务器能够发送请求或与 WSGI 容器通信。 同样,Python 应用程序提供了一个“可调用”对象,其中包含由 WSGI 应用程序调用的某些功能,这些功能是根据 PEP 3333 标准定义的。 因此,有多个 WSGI 容器可用,例如 Gunicorn、uWSGI 等。

​​​​​​​

 用户、Web 服务器、WSGI 和 Python 应用程序之间的通信

参考:https://medium.com/analytics-vidhya/what-is-wsgi-web-server-gateway-interface-ed2d290449e

在项目中安装 WSGI 容器,以便 Web 服务器可以与 WSGI 容器通信,该容器进一步与 Python 应用程序通信并相应地返回响应。 最后,当 Web 服务器获得响应时,将其发送回 Web 浏览器/用户

WSGI 代表“Web 服务器网关接口”。 它用于将来自 Web 服务器​ (例如 Apache 或 NGINX ) ​的请求转发到后端 Python Web 应用程序或框架。 然后从那里将响应传递回网络服务器以回复请求者。

请求从客户端的浏览器发送到服务器。 WSGI 将请求转发到 webserver python 应用程序,然后将完成的请求返回到 webserver 并返回到浏览器。

WSGI 有两个主要组件; 首先是服务器端。 服务器端元素将调用通常由路由定义的可调用对象。 一旦被调用,第二个组件,即 Web 应用程序或框架,将包含要执行的结构和代码。 在 Flask 等框架中,路由是用装饰器定义的。

五、Web 安全

XSS跨站脚本,用于描述允许攻击者通过网站将客户端脚本注入其他用户的浏览器的一类攻击。由于注入的代码是从站点进入浏览器的,因此代码是受信任的,并且可以执行诸如将用户的站点授权 cookie 发送给攻击者之类的操作。当攻击者拥有 cookie 时,他们可以像用户一样登录网站并执行用户可以做的任何事情,例如访问他们的信用卡详细信息、查看联系详细信息或更改密码。

SQL 注入漏洞使恶意用户能够在数据库上执行任意 SQL 代码,从而允许访问、修改或删除数据,而无需考虑用户的权限。成功的注入攻击可能会欺骗身份、创建具有管理权限的新身份、访问服务器上的所有数据或破坏/修改数据以使其无法使用。

CSRF 攻击允许恶意用户在不知情或不同意的情况下使用其他用户的凭据执行操作。

六、购买域名

一般有两种为网站购买域名的方法:一是购买全新的域名;或者购买二手域名。

购买新域名:访问西部数码之类的主机服务商网站,输入所需域名的名称,如果未被他人注册,就购买该域名。

如果想要的域名已经被他人注册拥有,也可以联系域名所有者进行谈判收购。

购买域名后网站将拥有一个 IP 地址,然后就可以启动网站

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/408487.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端笔记(10) Vue3 Router 监听路由参数变化

前言 Vue Router是开发Vue项目的必不可少的工具&#xff0c;也是极为重要的学习要点。 本篇介绍下Vue Router的基础使用和如何监听路由参数变化。 Vue Router入门 1 安装Router 安装Vue Router非常方便&#xff0c;只需执行一个命令&#xff0c;如果还不知道怎么搭建Vue项目…

详解 HttpServletResponse

详解 HttpServletResponse 核心方法代码示例1.设置响应状态码2.设置响应头3.设置响应内容&#xff08;1&#xff09;响应一个网页&#xff08;简单HTML&#xff09;&#xff08;2&#xff09;响应一个网页&#xff08;复杂HTML&#xff09;返回已有的一个网页1.重定向2.转发返回…

uniapp - 编译微信小程序项目的微信授权登录、获取微信手机号登录、最新版微信直接登录、手机与验证码登录的示例源码(适用于 uniapp 微信小程序项目,源代码直接开箱即用)超级详细的代码及注释

效果图 uniapp 项目编译微信小程序,一些常见的登录方式及源代码,示例代码干净整洁无BUG拿来即用。 本文示例实现了 uniapp 微信小程序项目的登录功能,包含微信授权登录、获取微信手机号登录、最新直接登录等, 你可以选择一个,直接复制源代码,稍微改改就能应用到你的项目…

后台管理系统

后台管理系统主要是我们内部人员使用的一款用来管理我们产品的一个系统&#xff0c;然后呢&#xff0c;我们今天写的呢是一个电商的后台管理系统。主要是可以用来管理我们的用户还有我们是商品的。 我们这个系统呢采用的是一个前后端分离的模式&#xff0c;主要是使用后端给我…

Vue 当页面进入全屏状态时element-ui的el-select下拉菜单不显示问题

在前两天进行页面全屏时&#xff0c;一切都还好好的&#xff0c;可当使用element-ui中的el-select时&#xff0c;下拉菜单却怎么也显示不出来&#xff0c;但只要退出全屏状态&#xff0c;立马就好。 非全屏时&#xff1a; 全屏时&#xff1a; 开始我以为是层级问题&#xff0…

前端加载高德离线地图的解决方案

核心是需要下载地图瓦片放在本地&#xff0c;脱离在线地图服务&#xff0c;实现离线加载地图。使用BIGMap工具下载地图离线瓦片到本地 下载地址&#xff1a;http://www.bigemap.com/reader/download/detail201802015.html BIGEMAP GIS Office-全能版需要注册试用版&#xff08;…

web前端面试宝典——带你直击面试重难点(40个经典题目,涵盖近90%的考点,码字2w,干货满满!)

系列文章目录 JavaScript 知识梳理&#xff0c;收录了web前端面试 95%以上 的高频考点&#xff0c;满满的干货。给你做一个高效的知识梳理&#xff0c;为你的面试保驾护航&#xff01; 内容参考链接HTML & CSS 篇HTML & CSS 篇JavaScript 篇&#xff08;一&#xff09;…

【微信小程序】条件渲染和列表渲染

&#x1f352;&#x1f352; 观众老爷们好啊&#xff0c;牛牛又更新了&#xff0c;上文我们详细了解了微信小程序中的事件绑定&#xff0c;那么今天我们就来讲讲WXML语法中的列表渲染和条件渲染&#xff0c;它俩也是非常重要的知识点&#xff0c;赶紧学起来吧。 &#x1f352;&…

如何更改ElementUI组件的图标大小以及标签属性

话不多说&#xff0c;直接上菜。 ElementUI提供的Rate评分组件的默认大小是这样的 图标太小了&#xff0c;想设置宽高、行高、尺寸&#xff0c;但代码不起作用。 打开浏览器调试&#xff0c;发现是用font-size设置才有用。 由此代码存在优先级问题&#xff0c;要提高优先级。…

vscode里面使用vue的一些插件,方便开发

1、vue 2 Snippets &#xff08;vue语法提示&#xff09; vue提示这个也可以 1.1 Vue VSCode Snippets 2、vetur Vetur支持.vue文件的语法高亮显示&#xff0c;除了支持template模板以外 3、Element UI Snippets(饿了么的提示) 4、indent-rainbow&#xff08;缩进高亮提示) 5…

Vue Element table表格实现表头自定义多类型动态筛选 , 目前10种筛选类型,复制即用

一、效果图 目前10种筛选类型 看看是否是你需要的&#xff0c;本文可能有点长 &#xff0c;我尽可能的给讲清楚&#xff0c;包括源码附上 二、无聊发言 点击当前行跳转部分数据后缀追加图标某列数据根据状态增加颜色标识 三、前言 实现图中的表格&#xff0c;特定的两个要求&…

css-两种画弧线方法

第一种&#xff1a;::after <template><view><view class"bg"></view></view> </template> <style> .bg{background-color: pink; } .bg::after{content: ;position: absolute;width: 160%;height: 100px;background: sk…

多项目版本管理:monorepo 策略

monorepo 是什么 一个产品会有多个项目&#xff0c;每个项目之间会存在版本同步的问题&#xff0c;如何在其中一个项目发布上线后&#xff0c;保证每个项目版本升级后的版本同步问题&#xff0c;提出的解决方案就是 monorepo 策略。 monorepo 是一种将多个项目代码存储在一个…

【小程序项目开发-- 京东商城】uni-app之商品列表页面 (上)

&#x1f935;‍♂️ 个人主页: 计算机魔术师 &#x1f468;‍&#x1f4bb; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 该文章收录专栏 ✨ 2022微信小程序京东商城实战 ✨ 文章目录一、前言介绍二、创建goodlist 分支&#xff08;选读*)三、商品列…

H5页面跳转小程序的三种方式

文章目录前言一、web-view标签返回小程序1.小程序启动页面只写web-view标签跳转到授权页面。2.编写auth.html3、把auth.html放到服务器就可以测试访问&#xff0c;打开小程序默认进入启动页面中的webview跳转到H5&#xff0c;授权成功后&#xff0c;通过wx.miniProgram.reLaunc…

Vue自定义网页顶部导航栏

Vue自定义web网页顶部导航栏 说明&#xff1a;此组件是为论坛类项目定制的一个实用的顶部导航栏&#xff0c;当然也可以用于其他的Web项目&#xff0c;只需要稍作修改便可以达到想要的效果。其中导航栏包含了搜索栏&#xff0c;用户头像&#xff0c;以及基本的导航标题。导航栏…

uniapp小程序自定义顶部导航栏,输入框软键盘把顶部顶上去的解决方法

首先在小程序input标签增加:adjust-position"false"的属性&#xff0c;然后已经可以把软键盘不使上方顶出&#xff0c;但是输入框也会因此被遮挡 解决方法&#xff1a;在input输入框聚焦的方法中增加操作 focus"inputBindFocus" 定义方法 inputBindFoc…

【vue3】基础概念的介绍

⭐【前言】 首先&#xff0c;恭喜你打开了一个系统化的学习专栏&#xff0c;在这个vue专栏中&#xff0c;大家可以根据博主发布文章的时间顺序进行一个学习。博主vue专栏指南在这&#xff1a;vue专栏的学习指南 &#x1f973;博主&#xff1a;初映CY的前说(前端领域) &#x1f…

Vue提升:理解vue中的 slot-scope=“scope“

slot是插槽&#xff0c;slot-scope“scope“语义更加明确&#xff0c;相当于一行的数据&#xff0c;在实际开发中会碰到如下的场景 这个工作状态是变化的&#xff0c;而我们就可以通过后端返回的具体值来判断这里应该显示什么样的内容&#xff0c;具体代码如下 <el-table-co…

利用vue实现登陆界面及其跳转

1.做登录框 步骤&#xff1a; &#xff08;1&#xff09; 创建vue项目&#xff0c;使用vite方式创建&#xff1b;npm init vuelatest &#xff08;2&#xff09;项目结构&#xff1a; src&#xff1a;代码书写位置&#xff1b; app.vue&#xff1a;根组件&#xff1b; main…