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格式即可。...
Umi-OCR终极指南:3分钟掌握免费离线OCR文字识别
Umi-OCR终极指南:3分钟掌握免费离线OCR文字识别 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二维码。内置多国语言库。 …...
RenderDoc实战:5分钟搞定OpenGL性能瓶颈定位(附Android联调技巧)
RenderDoc实战:5分钟定位OpenGL性能瓶颈的完整指南 移动端图形开发最令人头疼的瞬间,莫过于看到测试报告上"FPS波动大"的红色标记,却不知道从哪开始排查。上周团队里新来的工程师花了三天时间逐行检查着色器代码,最后发…...
Linux配置静态ip地址和Oracle VM VirtualBox导入/导出虚拟机Centos7
导入虚拟机选择管理 - 导入虚拟电脑找到自己的虚拟机位置修改内存大小,默认虚拟机电脑位置,MAC地址等导入后点击设置如下图:修改网络-网 -- 卡1,其他基本不需要修改桥接网络选好网卡接入网线;设置好网络以后使用命令重…...
Cursor Pro功能解锁全攻略:从免费版到专业体验的完整指南
Cursor Pro功能解锁全攻略:从免费版到专业体验的完整指南 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your …...
Ubuntu系统磁盘管理
要在Ubuntu系统中开机自动挂载AWS EBS卷(设备名为/dev/xvdd),需通过**/etc/fstab文件**配置自动挂载规则。以下是完整步骤(含前提条件、命令和验证): 一、前提条件 确认磁盘状态:/dev/xvdd需已…...
n600高效涡流选粉机设计【说明书 CAD图纸 开题报告 任务书 实习报告】
n600高效涡流选粉机作为粉体分级领域的核心设备,其设计聚焦于提升分级精度与处理效率。该设备通过优化涡流场分布与颗粒运动轨迹,实现微细粉体的高效分离。其核心作用在于利用离心力和气流的复合作用,使不同粒径的颗粒在旋转流场中产生差异化…...
WaveTools实战:鸣潮性能优化的5个技术秘诀
WaveTools实战:鸣潮性能优化的5个技术秘诀 【免费下载链接】WaveTools 🧰鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools 问题定位:帧率异常的底层原因分析 作为《鸣潮》玩家,你是否遇到过这样的困扰…...
(二)人工智能算法之监督学习——线性回归
一、核心定义 线性回归是有监督、回归任务里最基础、最经典的机器学习算法。 核心目标: 用一条直线(一元)/ 超平面(多元),拟合自变量 X 和连续型因变量 Y 之间的线性相关关系,用来做数值预测。 …...
从赛道到产线:智能车竞赛如何为《美国工厂》精神谱写青春代码
1. 智能车竞赛:制造业的青春实验室 当《美国工厂》纪录片中那些机械臂精准运作的画面还在脑海中挥之不去时,我站在全国大学生智能车竞赛的现场,突然意识到这两者之间存在着某种奇妙的联系。智能车竞赛就像是一个微缩版的制造业实验室…...
Nginx 安装部署
Yum在线安装部署 Nginx- 记录常用服务的版本:1.22.1- 选用稳定版本,上一个稳定版本1)配置 yum 源[rootweb01 ~]# vim /etc/yum.repos.d/nginx.repo[nginx-stable]namenginx stable repobaseurlhttp://nginx.org/packages/centos/$releasever/…...
