首页 > 编程语言 >Python Web 应用开发基础知识

Python Web 应用开发基础知识

时间:2024-11-13 13:43:43浏览次数:3  
标签:__ Web tasks Python db 基础知识 Flask

Python Web 应用开发基础知识

引言

随着互联网的快速发展,Web 应用程序的需求日益增加。Python 作为一种简单易学且功能强大的编程语言,已经成为 Web 开发中广受欢迎的选择之一。本文将深入探讨 Python Web 开发的基础知识,包括常用框架、基本概念、数据库交互以及前后端分离等内容。通过丰富的示例和详细的解释,帮助读者快速掌握 Python Web 开发的核心技能。

1. Python Web 开发概述

1.1 什么是 Web 应用?

Web 应用是通过网络(通常是 HTTP)访问的应用程序。用户通过浏览器与 Web 服务器进行交互,服务器处理请求并返回相应的内容。Web 应用可以是简单的静态页面,也可以是复杂的动态应用。

1.2 Python 在 Web 开发中的优势

  • 易学性:Python 语法简洁,易于上手,适合初学者。
  • 丰富的库和框架:Python 拥有众多强大的库和框架,能够加速开发过程。
  • 社区支持:Python 拥有庞大的开发者社区,提供丰富的学习资源和支持。

2. 常用的 Python Web 框架

Python Web 开发中,有几个流行的框架可以选择,下面是一些常用的框架:

2.1 Flask

Flask 是一个轻量级的 Web 框架,适合快速开发小型应用。它的灵活性和可扩展性使得开发者能够根据需求自由选择组件。

  1. 安装 Flask:
pip install flask

在这里插入图片描述

示例:使用 Flask 创建一个简单的 Web 应用
from flask import Flask

app = Flask(__name__)

@app.route('/')
def home():
    return "Hello, Flask!"

if __name__ == '__main__':
    app.run(debug=True)

在这里插入图片描述

2.2 Django

Django 是一个功能强大的 Web 框架,适合构建大型应用。它提供了许多开箱即用的功能,如用户认证、管理后台等。

示例:使用 Django 创建一个简单的 Web 应用
  1. 安装 Django:
pip install django
  1. 创建 Django 项目:
django-admin startproject myproject
cd myproject
python manage.py runserver
  1. 创建应用:
python manage.py startapp myapp
  1. myapp/views.py 中添加视图:
from django.http import HttpResponse

def home(request):
    return HttpResponse("Hello, Django!")
  1. myproject/urls.py 中配置路由:
from django.contrib import admin
from django.urls import path
from myapp.views import home

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', home),
]

3. Web 应用的基本概念

3.1 HTTP 协议

HTTP(超文本传输协议)是 Web 应用的基础。它定义了客户端(浏览器)和服务器之间的通信方式。常见的 HTTP 方法包括:

  • GET:请求数据。
  • POST:提交数据。
  • PUT:更新数据。
  • DELETE:删除数据。

3.2 RESTful API

REST(表述性状态转移)是一种设计风格,用于构建可扩展的 Web 服务。RESTful API 是遵循 REST 原则的 API 设计,通常使用 JSON 格式传输数据。

示例:使用 Flask 创建 RESTful API
from flask import Flask, jsonify, request

app = Flask(__name__)

# 模拟数据
tasks = [
    {'id': 1, 'title': 'Task 1', 'done': False},
    {'id': 2, 'title': 'Task 2', 'done': True},
]

@app.route('/tasks', methods=['GET'])
def get_tasks():
    return jsonify(tasks)

@app.route('/tasks', methods=['POST'])
def add_task():
    new_task = request.get_json()
    tasks.append(new_task)
    return jsonify(new_task), 201

if __name__ == '__main__':
    app.run(debug=True)

4. 数据库交互

大多数 Web 应用需要与数据库交互以存储和检索数据。Python 提供了多种数据库连接库,常用的有 SQLite、MySQL 和 PostgreSQL。

4.1 使用 SQLite 数据库

SQLite 是一个轻量级的数据库,适合小型应用。

示例:使用 SQLite 存取数据
import sqlite3

# 连接数据库(如果不存在则创建)
conn = sqlite3.connect('example.db')
c = conn.cursor()

# 创建表
c.execute('''CREATE TABLE IF NOT EXISTS tasks (id INTEGER PRIMARY KEY, title TEXT, done BOOLEAN)''')

# 插入数据
c.execute("INSERT INTO tasks (title, done) VALUES ('Task 1', False)")
conn.commit()

# 查询数据
c.execute("SELECT * FROM tasks")
print(c.fetchall())

# 关闭连接
conn.close()

4.2 使用 SQLAlchemy

SQLAlchemy 是一个强大的 ORM(对象关系映射)库,可以简化数据库操作。

示例:使用 SQLAlchemy 进行数据库操作
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///example.db'
db = SQLAlchemy(app)

class Task(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(80))
    done = db.Column(db.Boolean)

db.create_all()

# 添加任务
new_task = Task(title='Task 1', done=False)
db.session.add(new_task)
db.session.commit()

# 查询任务
tasks = Task.query.all()
print(tasks)

5. 前后端分离

随着 Web 应用的复杂性增加,前后端分离成为一种流行的开发模式。前端使用现代 JavaScript 框架(如 React、Vue.js)构建用户界面,后端提供 API 进行数据交互。

5.1 前后端分离的优势

  • 解耦:前后端分离使得前后端开发可以独立进行,降低了耦合度。
  • 灵活性:前端可以使用任何技术栈,后端可以专注于提供 API。
  • 可维护性:代码结构清晰,易于维护和扩展。

5.2 示例:使用 Flask 提供 API,前端使用 Vue.js

  1. 创建 Flask API:
@app.route('/api/tasks', methods=['GET'])
def get_tasks():
    tasks = Task.query.all()
    return jsonify([{'id': task.id, 'title': task.title, 'done': task.done} for task in tasks])
  1. 创建 Vue.js 前端:
<template>
  <div>
    <h1>任务列表</h1>
    <ul>
      <li v-for="task in tasks" :key="task.id">{{ task.title }}</li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      tasks: []
    };
  },
  mounted() {
    fetch('/api/tasks')
      .then(response => response.json())
      .then(data => {
        this.tasks = data;
      });
  }
};
</script>

6. 部署 Web 应用

将 Web 应用部署到服务器上,使其能够被用户访问。常用的部署方式包括:

  • 虚拟主机:使用共享主机服务。
  • 云服务:使用 AWS、Heroku 等云平台。
  • Docker:使用 Docker 容器化应用,便于部署和扩展。

示例:使用 Heroku 部署 Flask 应用

  1. 安装 Heroku CLI。
  2. 创建 requirements.txtProcfile 文件。
  3. 使用以下命令部署:
heroku create
git push heroku master

结论

本文详细介绍了 Python Web 应用开发的基础知识,包括常用框架、基本概念、数据库交互、前后端分离以及部署等内容。希望通过本文的讲解,能够帮助读者快速入门 Python Web 开发,并在实际项目中灵活运用这些知识。

参考资料

如果你有任何问题或想法,请在评论区留言!通过不断学习和实践,你将能够更好地掌握 Python Web 开发的技能。

标签:__,Web,tasks,Python,db,基础知识,Flask
From: https://blog.csdn.net/m0_70474954/article/details/143726035

相关文章

  • 2024 同一个网段,反弹shell四种方法【linux版本】bash、python、nc、villian反弹shell
    实验环境准备(同一个网段下,我是桥接的虚拟机)一、bash反弹shell二、python反弹shell三、nc反弹shell四、villain反弹shell实验环境准备(同一个网段下,我是桥接的虚拟机)      一台kali的linux(攻击者)        一台centos7/debian[另一个linux](受害者)一、b......
  • L0G3000作业-Git基础知识
    一、闯关任务1任务要求:破冰之自我介绍首先fork一下GitHub-InternLM/Tutorial:LLM&VLMTutorial该项目到自己的账号,注意不要勾选下图的“Copythecamp4branchonly”。来到vscode启动虚拟环境,然后输入下面命令将仓库克隆到本地gitclonehttps://github.com/HuHu1226......
  • 使用Websocket构建小型的IM通讯程序
    目录目录使用PWA构建小型的IM通讯程序简介项目地址界面预览技术栈服务端支持的协议前端总结使用PWA构建小型的IM通讯程序简介使用Websocket、MQTT协议构建小型的IM通信程序,可用于物联网或及时通信等,通过PWA技术,安装到用户手机桌面,提高用户整体交互感。项目地......
  • 免费送源码:Java+python+django+MySQL 小区疫情订菜系统 计算机毕业设计原创定制
    摘 要随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于小区疫情订菜系统当然也不能排除在外,随着网络技术的不断成熟,带动了小区疫情订菜系统,它彻底改变了过去传统的管理方式,不仅使服务管理难度变低了,还提升了管理的灵活性。这种......
  • 怎么用家用电脑做服务器(web服务器、ftp服务器、小程序服务器,云电脑)
    原料:    1、家用电脑,是电脑就行    2、宽带,这个有要求哦,必须是官方宽带,北乔峰,南慕容,北联通南电信,什么长城宽带等等地方小帮派,都没有朝廷的公网IP,没法直接当服务器,想当服务器只能中介转播....   3、暂时卸载或者关闭杀毒软件     杀毒软件不像......
  • Windows 下安装miniconda 虚拟python环境,搭配 VS Code
    miniconda下载地址https://docs.anaconda.com/miniconda/miniconda-install/miniconda仓库:https://repo.anaconda.com/miniconda/可以按照官方文档校验哈希值,本次在Windows安装,不设置环境变量。从Anacondaprompt启动。2.配置国内源查看源设置condaconfig--show-so......
  • python装饰器decorator的应用
    python中的装饰器类似于java中的AOP切面编程的思想,下面通过demo教大家如何实现(1)一个最简单的装饰器demo1 #一个最简单的装饰器defmy_decorator(func):defwrapper():print("Somethingishappeningbeforethefunctioniscalled.")func()......
  • App WebView白屏检测及解决总结,包括Android 和 iOS
    App上WebView白屏在移动端上场景的H5页面白屏问题,根据平台分为Android和ios端上H5白屏问题(相关解决和优化基于移动端侧)之前在自己博客发布过,最近有做朋友问就再发出来下,希望能帮助更多人,重要的是了解白屏问题的原理和解决思路。Android的的白屏问题表现现对比较多些,按问题......
  • 超详细的 Stable Diffusion Webui入门教程 基础操作
    前言工欲善其事,必先利其器!今天我们聊聊StableDiffusionWebUI的基础操作以及各个参数都代表了什么。一、大模型的切换在StableDiffusion(以下简称SD)的背景下,大模型通常意味着,它能够更准确地理解给定的文本提示,生成更符合用户期待的图像。这些大模型通常是通过使用......
  • Python模块之manim (动画模块)
    模块作用简介:Python模块之manim(动画模块)官方英文帮助:https://docs.python.org/3/library/官方简体中文帮助:https://docs.python.org/zh-cn/3/library/manim官方:https://docs.manim.community/en/stable/installation.html必要操作:>>>frommanimimport*......