【30天玩转python】Web开发(Flask/Django)

server/2024/10/17 21:38:24/

Web开发(Flask/Django)

Python 在 Web 开发领域非常流行,拥有多个强大的 Web 框架,其中最受欢迎的两个是 Flask 和 Django。本篇文章将介绍 Flask 和 Django 的基本功能、区别,以及如何使用它们来快速构建 Web 应用。


1. Flask 简介

Flask 是一个轻量级的 Web 框架,设计简单易用,适合小型项目或对框架有更高自定义要求的开发者。Flask 以其灵活性和可扩展性著称,提供了基础的开发工具包,可以根据项目需求自由扩展。

1.1 安装 Flask

使用以下命令安装 Flask:

pip install flask
1.2 Flask 基本用法

示例:创建一个简单的 Flask 应用

python">from flask import Flaskapp = Flask(__name__)# 定义路由和视图函数
@app.route('/')
def hello_world():return 'Hello, Flask!'if __name__ == '__main__':# 启动 Flask 应用app.run(debug=True)
  • @app.route('/'):定义了一个根路径的路由,当用户访问该路径时,将执行 hello_world() 函数。
  • app.run():启动服务器,debug=True 表示启用调试模式。
1.3 Flask 中的请求与响应

Flask 提供了处理 HTTP 请求和响应的便捷方式。

示例:处理 GET 和 POST 请求

python">from flask import Flask, requestapp = Flask(__name__)# 处理 GET 和 POST 请求
@app.route('/submit', methods=['GET', 'POST'])
def submit():if request.method == 'POST':data = request.form['data']return f'POST 数据: {data}'return 'GET 请求'if __name__ == '__main__':app.run(debug=True)
  • request.form:用于处理 POST 请求中的表单数据。
  • methods=['GET', 'POST']:指定该路由可以接受 GET 和 POST 请求。
1.4 模板渲染

Flask 支持 Jinja2 模板引擎,可以动态渲染 HTML 页面。

示例:渲染模板

python">from flask import Flask, render_templateapp = Flask(__name__)@app.route('/')
def home():return render_template('index.html', name='Flask')if __name__ == '__main__':app.run(debug=True)

templates/ 文件夹下创建一个 index.html 文件:

<!DOCTYPE html>
<html>
<head><title>Flask 应用</title>
</head>
<body><h1>Hello, {{ name }}!</h1>
</body>
</html>

2. Django 简介

Django 是一个功能完备的 Web 框架,适合大型项目开发,提供了许多内置功能,如用户认证、ORM、后台管理等。Django 的理念是 “不重复造轮子”(Don’t Repeat Yourself, DRY),它能够快速开发出具有完善功能的 Web 应用。

2.1 安装 Django

使用以下命令安装 Django:

pip install django
2.2 Django 项目结构

创建 Django 项目和应用:

django-admin startproject myproject
cd myproject
python manage.py startapp myapp

Django 项目目录结构如下:

myproject/manage.pymyproject/__init__.pysettings.pyurls.pywsgi.pymyapp/migrations/__init__.pyadmin.pyapps.pymodels.pyviews.pyurls.py
  • myproject/:项目的主目录,包含项目配置文件。
  • myapp/:创建的应用,包含视图、模型等文件。
2.3 Django 基本用法

示例:创建视图和路由

myapp/views.py 中创建视图:

python">from django.http import HttpResponsedef home(request):return HttpResponse('Hello, Django!')

myproject/urls.py 中配置路由:

python">from django.contrib import admin
from django.urls import path
from myapp import viewsurlpatterns = [path('admin/', admin.site.urls),path('', views.home),
]

启动开发服务器:

python manage.py runserver

访问 http://127.0.0.1:8000/,将显示 Hello, Django!

2.4 Django 模板渲染

与 Flask 类似,Django 也支持模板渲染。首先在 myapp/templates/ 文件夹下创建一个 index.html 文件:

<!DOCTYPE html>
<html>
<head><title>Django 应用</title>
</head>
<body><h1>Hello, {{ name }}!</h1>
</body>
</html>

myapp/views.py 中渲染模板:

python">from django.shortcuts import renderdef home(request):return render(request, 'index.html', {'name': 'Django'})
2.5 Django 数据库操作

Django 提供了强大的 ORM(对象关系映射)功能,可以轻松操作数据库。

示例:定义模型

myapp/models.py 中定义一个模型:

python">from django.db import modelsclass Article(models.Model):title = models.CharField(max_length=100)content = models.TextField()published = models.DateTimeField(auto_now_add=True)def __str__(self):return self.title

示例:数据库迁移

运行以下命令将模型应用到数据库:

python manage.py makemigrations
python manage.py migrate

示例:在视图中查询数据库

python">from django.shortcuts import render
from .models import Articledef article_list(request):articles = Article.objects.all()return render(request, 'articles.html', {'articles': articles})

3. Flask 与 Django 的区别

特性FlaskDjango
架构风格轻量、微框架全功能、“电池齐全”
适用场景小型项目、自定义需求较多的项目大型项目、快速开发
灵活性高,自由度大较低,内置功能多
学习曲线平缓,入门简单较陡,配置较多
扩展性依赖于第三方扩展库内置多种功能,扩展性好

4. 小结

Flask 和 Django 各有千秋:Flask 适合小型、灵活的项目,Django 则适合快速开发大型 Web 应用。根据项目需求选择合适的框架,可以极大提升开发效率。


http://www.ppmy.cn/server/125281.html

相关文章

WITS核心价值观【创新】篇|系统进化论 解锁新纪元

「客尊」、「诚信」、「创新」 与「卓越」 是纬创软件的核心价值观。我们秉持诚信态度&#xff0c;致力于成为客户长期且值得信赖的合作伙伴。持续提升服务厚度&#xff0c;透过数字创新实践多市场的跨境交付&#xff0c;助客户保持市场领先地位。以追求卓越的不懈精神&#xf…

虚谷中使用PL/SQL改变模式下所有表的大小写

一、将表名转换为小写 1、原理和思路 首先&#xff0c;我们需要查询出指定模式下的所有表名&#xff0c;在xugu中&#xff0c;数据字典dba_tables包含了当前库下的所有表信息&#xff0c;我们可以使用游标&#xff08;CURSOR&#xff09;来遍历这些表名。 2、代码示例如下&am…

在线点餐新体验:Spring Boot 点餐系统

摘 要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff1b;对于网上点餐系统当然也不能排除在外&#xff0c;随着网络技术的不断成熟&#xff0c;带动了网上点餐系统&#xff0c;它彻底改变了过去传统的…

渗透测试--文件上传常用绕过方式

文件上传常用绕过方式 1.前端代码&#xff0c;限制只允许上传图片。修改png为php即可绕过前端校验。 2.后端校验Content-Type 校验文件格式 前端修改&#xff0c;抓取上传数据包&#xff0c;并且修改 Content-Type 3.服务端检测&#xff08;目录路径检测&#xff09; 对目…

事件和委托的悲伤故事

小强的故事 从前的从前&#xff0c;有一个村子&#xff0c;叫双空函数村&#xff0c;各个不同的函数相互帮衬&#xff0c;幸福而稳定的劳作着。 虽然村子里每个函数都是空参空返回&#xff0c;但每个函数脑子里都装着不一样却一生注定的指令。&#xff08;即程序开始编译之后…

【漏洞复现】VEXUS多语言货币交易所存在未授权访问漏洞

漏洞描述 java后端,非常完整的一套交易所,UI前端做的也很漂亮,新增了交易跟单功能,前端pc+wap都是uniapp纯源码,前端源码node_modules环境已经安装好了,拿去直接编译就可以. 后端 前端 免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共…

手把手教你用Python进行Web抓取(附代码)

本教程以在Fast Track上收集百强公司的数据为例&#xff0c;教你抓取网页信息。 作为一名数据科学家&#xff0c;我在工作中所做的第一件事就是网络数据采集。使用代码从网站收集数据&#xff0c;当时对我来说是一个完全陌生的概念&#xff0c;但它是最合理、最容易获取的数据来…

华为FreeBuds 6i怎么佩戴不容易掉?

华为FreeBuds 6i佩戴技巧大公开&#xff1f;给你们总结了几个佩戴更稳的小技巧&#xff0c;尊嘟很有用&#xff0c;不要再说戴不稳啦~ 1、选择大小合适的耳塞 华为FreeBuds 6i包装盒内有附赠的三种尺寸的耳塞&#xff0c;大家可以根据自己的耳道大小选择耳塞&#xff0c;试戴的…