python中Web开发框架的使用
Python 的 Web 开发框架种类繁多,常见的有 Django 和 Flask 这两个框架。它们各有优点,适合不同类型的 Web 应用开发需求。下面,我将详细介绍这两大主流框架的使用方法,让你快速上手 Python 的 Web 开发。
1. Django
Django 是一个功能齐全、强大且高效的全栈 Web 开发框架,适合快速开发复杂的 Web 应用。它内置了很多功能,如 ORM(对象关系映射)、表单处理、用户认证、模板引擎等。
Django 安装
首先,你需要通过 pip 安装 Django:
pip install django
创建一个 Django 项目
-
创建项目:
使用django-admin startproject命令创建一个新项目。django-admin startproject mysite -
启动开发服务器:
进入项目目录,启动 Django 的开发服务器。cd mysite python manage.py runserver打开浏览器,访问
http://127.0.0.1:8000/,你将看到 Django 的欢迎页面。
创建一个 Django 应用
在 Django 中,项目由多个应用组成。应用是功能模块,可以独立运行。
-
创建应用:
python manage.py startapp blog这将在项目目录下创建一个名为
blog的应用文件夹。 -
注册应用:
打开项目的settings.py文件,找到INSTALLED_APPS,将新创建的blog应用添加进去:INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','blog', # 注册新应用 ]
定义模型 (Model)
Django 的模型是定义数据库表的方式。假设你想创建一个博客文章模型。
-
在
models.py中定义模型:from django.db import modelsclass Post(models.Model):title = models.CharField(max_length=200)content = models.TextField()created_at = models.DateTimeField(auto_now_add=True) -
创建数据库迁移:
Django 使用迁移来管理数据库模式。首先,创建迁移文件:python manage.py makemigrations -
应用迁移:
应用迁移,将模型映射到数据库:python manage.py migrate
创建视图 (Views)
视图是处理请求并返回响应的逻辑。
-
在
views.py中定义视图:from django.shortcuts import render from .models import Postdef post_list(request):posts = Post.objects.all()return render(request, 'blog/post_list.html', {'posts': posts}) -
设置 URL 路由:
在blog应用下创建一个urls.py文件并添加路由:from django.urls import path from . import viewsurlpatterns = [path('', views.post_list, name='post_list'), ] -
连接项目的
urls.py:
在项目的mysite/urls.py中,包含应用的 URL:from django.urls import include, pathurlpatterns = [path('blog/', include('blog.urls')),path('admin/', admin.site.urls), ]
模板 (Templates)
Django 使用模板来渲染 HTML 页面。
- 创建模板文件:
在blog文件夹下创建一个templates/blog/post_list.html文件,填入以下内容:<!DOCTYPE html> <html> <body><h1>Blog Posts</h1><ul>{% for post in posts %}<li>{{ post.title }} - {{ post.created_at }}</li>{% endfor %}</ul> </body> </html>
现在访问 http://127.0.0.1:8000/blog/,你会看到博客文章列表展示在页面上。
2. Flask
Flask 是一个轻量级的 Web 框架,适合小型应用或 API 开发。与 Django 相比,Flask 更灵活,但需要你自行选择和配置许多工具和库。
Flask 安装
通过 pip 安装 Flask:
pip install Flask
创建一个简单的 Flask 应用
-
创建 Flask 项目:
在项目目录下创建一个名为app.py的文件,写入以下代码:from flask import Flaskapp = Flask(__name__)@app.route('/') def home():return "Hello, Flask!"if __name__ == '__main__':app.run(debug=True) -
运行 Flask 项目:
在终端中运行:python app.py打开浏览器,访问
http://127.0.0.1:5000/,你会看到页面显示 “Hello, Flask!”。
路由和视图
Flask 使用装饰器定义路由。
-
定义路由和视图:
你可以根据 URL 创建不同的视图:@app.route('/hello/<name>') def hello(name):return f"Hello, {name}!" -
动态路由:
Flask 支持动态 URL,你可以使用变量捕获 URL 参数。@app.route('/user/<username>') def show_user_profile(username):return f"User {username}"
模板 (Templates)
Flask 使用 Jinja2 作为模板引擎,允许动态生成 HTML。
-
创建模板目录:
在项目目录下创建一个名为templates的文件夹,并在其中创建index.html文件:<!DOCTYPE html> <html> <body><h1>Hello, {{ name }}!</h1> </body> </html> -
渲染模板:
修改app.py,使用render_template()函数渲染模板:from flask import render_template@app.route('/hello/<name>') def hello(name):return render_template('index.html', name=name) -
访问:
现在访问http://127.0.0.1:5000/hello/Flask,你会看到页面显示 “Hello, Flask!”。
表单处理
你可以使用 Flask-WTF 来处理表单输入。
-
安装 Flask-WTF:
pip install Flask-WTF -
表单示例:
from flask_wtf import FlaskForm from wtforms import StringField, SubmitField from wtforms.validators import DataRequiredclass NameForm(FlaskForm):name = StringField('What is your name?', validators=[DataRequired()])submit = SubmitField('Submit') -
表单视图:
创建表单视图并处理表单提交:from flask import Flask, render_template, redirect, url_for from flask_wtf import FlaskForm from wtforms import StringField, SubmitFieldapp = Flask(__name__) app.config['SECRET_KEY'] = 'secret!'class NameForm(FlaskForm):name = StringField('What is your name?')submit = SubmitField('Submit')@app.route('/form', methods=['GET', 'POST']) def form():form = NameForm()if form.validate_on_submit():return redirect(url_for('hello', name=form.name.data))return render_template('form.html', form=form)
总结
- Django 是一个全功能的框架,适合快速开发复杂的 Web 应用,特别是当你需要使用强大的后台管理界面、ORM 和用户身份验证时。
- Flask 是一个轻量级框架,更灵活,适合较小的项目和 API 开发,需要你自己选择和配置各种库。
无论选择哪个框架,关键是根据项目需求和个人喜好,灵活运用这些工具进行开发。如果你想要更详细的代码示例或遇到任何问题,随时问我!
相关文章:
python中Web开发框架的使用
Python 的 Web 开发框架种类繁多,常见的有 Django 和 Flask 这两个框架。它们各有优点,适合不同类型的 Web 应用开发需求。下面,我将详细介绍这两大主流框架的使用方法,让你快速上手 Python 的 Web 开发。 1. Django Django 是一…...
【AI视频】Runway:Gen-2 运镜详解
博客主页: [小ᶻZ࿆] 本文专栏: AI视频 | Runway 文章目录 💯前言💯Camera Control(运镜)💯Camera Control功能测试Horizonta(左右平移)Vertical(上下平移࿰…...
Python “函数” ——Python面试100道实战题目练习,巩固知识、检查技术、成功就业
本文主要是作为Python中函数的一些题目,方便学习完Python的函数之后进行一些知识检验,感兴趣的小伙伴可以试一试,含选择题、判断题、实战题、填空题,答案在第五章。 在做题之前可以先学习或者温习一下Python的函数,推荐…...
[产品管理-15]:NPDP新产品开发 - 13 - 产品创新流程 - 具体产品的创新流程:精益生产与敏捷开发
目录 前言: 一、集成产品开发IPD模型——集成跨功能团队的产品开发 1.1 概述 1、IPD模型的核心思想 2、IPD模型的主要组成部分 3、IPD模型的实施步骤 4、IPD模型的优点 1.2 基于IPD系统的组织实践等级 1.3 IPD的优缺点 二、瀑布开发模型 1、定义与特点…...
FB仿真模拟PID曲线数据
为了能直观的理解PID的参数调整与曲线数据的变化关系,使用FB写了一个模拟PID曲线数据的程序。 PID类如下: Type PIDController Private : kp_ As Double //比例增益 ki_ As Double //积分增益 kd_ As Double …...
【变化检测】基于ChangeStar建筑物(LEVIR-CD)变化检测实战及ONNX推理
主要内容如下: 1、LEVIR-CD数据集介绍及下载 2、运行环境安装 3、ChangeStar模型训练与预测 4、Onnx运行及可视化 运行环境:Python3.8,torch1.12.0cu113,onnxruntime-gpu1.12.0 likyoo变化检测源码:https://github.c…...
kafka动态认证 自定义认证 安全认证-亲测成功
kafka动态认证 自定义认证 安全认证-亲测成功 背景 Kafka默认是没有安全机制的,一直在裸奔。用户认证功能,是一个成熟组件不可或缺的功能。在0.9版本以前kafka是没有用户认证模块的(或者说只有SSL),好在kafka0.9版本…...
航空航司reese84逆向
reese84逆向 Reese84 是一种用于保护网站防止自动化爬虫抓取的防护机制,尤其是在航空公司网站等需要严格保护数据的平台上广泛使用。这种机制通过复杂的指纹识别和行为分析技术来检测和阻止非人类的互动。例如,Reese84 可以通过分析访问者的浏览器指纹、…...
【HTTP】请求“报头”,Referer 和 Cookie
Referer 描述了当前这个页面是从哪里来的(从哪个页面跳转过来的) 浏览器中,直接输入 URL/点击收藏夹打开的网页,此时是没有 referer。当你在 sogou 页面进行搜索时,新进入的网页就会有 referer 有一个非常典型的用…...
使用sqoop报错
报错一: java.io.IOException: java.lang.ClassNotFoundException: org.apache.hadoop.hive.conf.HiveConf 这个错误表示在执行与 Hive 相关的操作时,程序无法找 org.apache.hadoop.hive.conf.HiveConf 这个类。这个类是 Hive 的配置类,它用…...
一个简单的基于C语言的HTTP代理服务器的案例
一个简单的基于C语言的HTTP代理服务器的案例。这个代理服务器可以接收客户端的HTTP请求,并将请求转发到目标服务器,然后将服务器的响应返回给客户端。 1. 代理服务器的主要代码 #include <stdio.h> #include <stdlib.h> #include <stri…...
Linux学习-Ansible(二)
基本配置 #主机清单文件 [rootharbor ansible]# cat hostlist [web] 192.168.29.161 192.168.29.162 [es] 192.168.29.171 192.168.29.172 192.168.29.173 #查看所有被管理的主机 [rootharbor ansible]# ansible all --list-hostshosts (5):192.168.29.161192.168.29.162192.1…...
[SDX35]SDX35硬件使用512MB内存,实际只初始化256MB问题分析及解决方案
SDX35 SDX35介绍 SDX35设备是一种多模调制解调器芯片,支持 4G/5G sub-6 技术。它是一个4nm芯片专为实现卓越的性能和能效而设计。它包括一个 1.9 GHz Cortex-A7 应用处理器。 SDX35主要特性 ■ 3GPP Rel. 17 with 5G Reduced Capability (RedCap) support. Backward compati…...
S3C2440中断
一、中断执行的流程 soc中断的执行流程 1、中断源发生中断请求 2、CPU检查该中断是否被屏蔽,以及总中断是否被屏蔽 3、考察中断优先级 4、保护现场 5、执行中断服务函数 6、恢复现场 二、中断初始化 1、设置中断模式(INTMOD)寄存器(…...
编译成功!QT/6.7.2/Creator编译Windows64 MySQL驱动(MinGW版)
参考 GitHub - thecodemonkey86/qt_mysql_driver: Typical symptom: QMYSQL driver not loaded. Solution: get pre-built Qt SQL driver plug-in required to establish a connection to MySQL / MariaDB using Qt. Download qsqlmysql.dll binaries built from official Qt …...
SQLyou基础用法讲解
文章目录 SQLyog 基础知识讲解 1. 数据定义语言 (DDL)创建数据库创建表修改表删除表 2. 数据操作语言 (DML)插入数据批量插入数据更新数据条件更新删除数据条件删除 3. 数据查询语言 (DQL)查询数据查询所有数据使用排序使用聚合函数分组查询使用 HAVING 子句 4. 事务5. 索引创建…...
Can‘t get Kerberos realm
近期封装Ozone客户端,需要走kerberos登陆,遇到了一个问题,花了很长时间解决。记录一下,跟网上能搜到的解决方案不大一样。 先看有问题的代码 Configuration config new Configuration();ConfigurationUtils.setHadoopConfig(conf…...
[python]从零开始的PySide安装配置教程
一、PySide是什么? PySide 是 Qt for Python 项目的一部分,它提供了与 PyQt 类似的功能,使开发者能够使用 Python 编程语言来构建基于 Qt 的图形用户界面 (GUI) 应用程序。PySide 是由 Qt 公司官方维护的,而 PyQt 则是由第三方开发…...
LeetCode[中等] 74.搜索二维矩阵
给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false 。…...
overleaf如何下载论文的pdf
用overleaf写完英文论文后,要将论文保存为PDF格式 点击图片中的下载按钮 然后选择一个路径保存论文的PDF格式即可。...
Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...
