当前位置: 首页 > news >正文

python中Web开发框架的使用

Python 的 Web 开发框架种类繁多,常见的有 DjangoFlask 这两个框架。它们各有优点,适合不同类型的 Web 应用开发需求。下面,我将详细介绍这两大主流框架的使用方法,让你快速上手 Python 的 Web 开发。


1. Django

Django 是一个功能齐全、强大且高效的全栈 Web 开发框架,适合快速开发复杂的 Web 应用。它内置了很多功能,如 ORM(对象关系映射)、表单处理、用户认证、模板引擎等。

Django 安装

首先,你需要通过 pip 安装 Django:

pip install django
创建一个 Django 项目
  1. 创建项目
    使用 django-admin startproject 命令创建一个新项目。

    django-admin startproject mysite
    
  2. 启动开发服务器
    进入项目目录,启动 Django 的开发服务器。

    cd mysite
    python manage.py runserver
    

    打开浏览器,访问 http://127.0.0.1:8000/,你将看到 Django 的欢迎页面。

创建一个 Django 应用

在 Django 中,项目由多个应用组成。应用是功能模块,可以独立运行。

  1. 创建应用

    python manage.py startapp blog
    

    这将在项目目录下创建一个名为 blog 的应用文件夹。

  2. 注册应用
    打开项目的 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 的模型是定义数据库表的方式。假设你想创建一个博客文章模型。

  1. 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)
    
  2. 创建数据库迁移
    Django 使用迁移来管理数据库模式。首先,创建迁移文件:

    python manage.py makemigrations
    
  3. 应用迁移
    应用迁移,将模型映射到数据库:

    python manage.py migrate
    
创建视图 (Views)

视图是处理请求并返回响应的逻辑。

  1. 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})
    
  2. 设置 URL 路由
    blog 应用下创建一个 urls.py 文件并添加路由:

    from django.urls import path
    from . import viewsurlpatterns = [path('', views.post_list, name='post_list'),
    ]
    
  3. 连接项目的 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 页面。

  1. 创建模板文件
    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 应用
  1. 创建 Flask 项目
    在项目目录下创建一个名为 app.py 的文件,写入以下代码:

    from flask import Flaskapp = Flask(__name__)@app.route('/')
    def home():return "Hello, Flask!"if __name__ == '__main__':app.run(debug=True)
    
  2. 运行 Flask 项目
    在终端中运行:

    python app.py
    

    打开浏览器,访问 http://127.0.0.1:5000/,你会看到页面显示 “Hello, Flask!”。

路由和视图

Flask 使用装饰器定义路由。

  1. 定义路由和视图
    你可以根据 URL 创建不同的视图:

    @app.route('/hello/<name>')
    def hello(name):return f"Hello, {name}!"
    
  2. 动态路由
    Flask 支持动态 URL,你可以使用变量捕获 URL 参数。

    @app.route('/user/<username>')
    def show_user_profile(username):return f"User {username}"
    
模板 (Templates)

Flask 使用 Jinja2 作为模板引擎,允许动态生成 HTML。

  1. 创建模板目录
    在项目目录下创建一个名为 templates 的文件夹,并在其中创建 index.html 文件:

    <!DOCTYPE html>
    <html>
    <body><h1>Hello, {{ name }}!</h1>
    </body>
    </html>
    
  2. 渲染模板
    修改 app.py,使用 render_template() 函数渲染模板:

    from flask import render_template@app.route('/hello/<name>')
    def hello(name):return render_template('index.html', name=name)
    
  3. 访问
    现在访问 http://127.0.0.1:5000/hello/Flask,你会看到页面显示 “Hello, Flask!”。

表单处理

你可以使用 Flask-WTF 来处理表单输入。

  1. 安装 Flask-WTF

    pip install Flask-WTF
    
  2. 表单示例

    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')
    
  3. 表单视图
    创建表单视图并处理表单提交:

    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 开发框架种类繁多&#xff0c;常见的有 Django 和 Flask 这两个框架。它们各有优点&#xff0c;适合不同类型的 Web 应用开发需求。下面&#xff0c;我将详细介绍这两大主流框架的使用方法&#xff0c;让你快速上手 Python 的 Web 开发。 1. Django Django 是一…...

【AI视频】Runway:Gen-2 运镜详解

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AI视频 | Runway 文章目录 &#x1f4af;前言&#x1f4af;Camera Control&#xff08;运镜&#xff09;&#x1f4af;Camera Control功能测试Horizonta&#xff08;左右平移&#xff09;Vertical&#xff08;上下平移&#xff0…...

Python “函数” ——Python面试100道实战题目练习,巩固知识、检查技术、成功就业

本文主要是作为Python中函数的一些题目&#xff0c;方便学习完Python的函数之后进行一些知识检验&#xff0c;感兴趣的小伙伴可以试一试&#xff0c;含选择题、判断题、实战题、填空题&#xff0c;答案在第五章。 在做题之前可以先学习或者温习一下Python的函数&#xff0c;推荐…...

[产品管理-15]:NPDP新产品开发 - 13 - 产品创新流程 - 具体产品的创新流程:精益生产与敏捷开发

目录 前言&#xff1a;​ 一、集成产品开发IPD模型——集成跨功能团队的产品开发 1.1 概述 1、IPD模型的核心思想 2、IPD模型的主要组成部分 3、IPD模型的实施步骤 4、IPD模型的优点 1.2 基于IPD系统的组织实践等级 1.3 IPD的优缺点 二、瀑布开发模型 1、定义与特点…...

FB仿真模拟PID曲线数据

为了能直观的理解PID的参数调整与曲线数据的变化关系&#xff0c;使用FB写了一个模拟PID曲线数据的程序。 PID类如下&#xff1a; Type PIDController Private : kp_ As Double //比例增益 ki_ As Double //积分增益 kd_ As Double …...

【变化检测】基于ChangeStar建筑物(LEVIR-CD)变化检测实战及ONNX推理

主要内容如下&#xff1a; 1、LEVIR-CD数据集介绍及下载 2、运行环境安装 3、ChangeStar模型训练与预测 4、Onnx运行及可视化 运行环境&#xff1a;Python3.8&#xff0c;torch1.12.0cu113&#xff0c;onnxruntime-gpu1.12.0 likyoo变化检测源码&#xff1a;https://github.c…...

kafka动态认证 自定义认证 安全认证-亲测成功

kafka动态认证 自定义认证 安全认证-亲测成功 背景 Kafka默认是没有安全机制的&#xff0c;一直在裸奔。用户认证功能&#xff0c;是一个成熟组件不可或缺的功能。在0.9版本以前kafka是没有用户认证模块的&#xff08;或者说只有SSL&#xff09;&#xff0c;好在kafka0.9版本…...

航空航司reese84逆向

reese84逆向 Reese84 是一种用于保护网站防止自动化爬虫抓取的防护机制&#xff0c;尤其是在航空公司网站等需要严格保护数据的平台上广泛使用。这种机制通过复杂的指纹识别和行为分析技术来检测和阻止非人类的互动。例如&#xff0c;Reese84 可以通过分析访问者的浏览器指纹、…...

【HTTP】请求“报头”,Referer 和 Cookie

Referer 描述了当前这个页面是从哪里来的&#xff08;从哪个页面跳转过来的&#xff09; 浏览器中&#xff0c;直接输入 URL/点击收藏夹打开的网页&#xff0c;此时是没有 referer。当你在 sogou 页面进行搜索时&#xff0c;新进入的网页就会有 referer 有一个非常典型的用…...

使用sqoop报错

报错一&#xff1a; java.io.IOException: java.lang.ClassNotFoundException: org.apache.hadoop.hive.conf.HiveConf 这个错误表示在执行与 Hive 相关的操作时&#xff0c;程序无法找 org.apache.hadoop.hive.conf.HiveConf 这个类。这个类是 Hive 的配置类&#xff0c;它用…...

一个简单的基于C语言的HTTP代理服务器的案例

一个简单的基于C语言的HTTP代理服务器的案例。这个代理服务器可以接收客户端的HTTP请求&#xff0c;并将请求转发到目标服务器&#xff0c;然后将服务器的响应返回给客户端。 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检查该中断是否被屏蔽&#xff0c;以及总中断是否被屏蔽 3、考察中断优先级 4、保护现场 5、执行中断服务函数 6、恢复现场 二、中断初始化 1、设置中断模式&#xff08;INTMOD&#xff09;寄存器(…...

编译成功!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客户端&#xff0c;需要走kerberos登陆&#xff0c;遇到了一个问题&#xff0c;花了很长时间解决。记录一下&#xff0c;跟网上能搜到的解决方案不大一样。 先看有问题的代码 Configuration config new Configuration();ConfigurationUtils.setHadoopConfig(conf…...

[python]从零开始的PySide安装配置教程

一、PySide是什么&#xff1f; PySide 是 Qt for Python 项目的一部分&#xff0c;它提供了与 PyQt 类似的功能&#xff0c;使开发者能够使用 Python 编程语言来构建基于 Qt 的图形用户界面 (GUI) 应用程序。PySide 是由 Qt 公司官方维护的&#xff0c;而 PyQt 则是由第三方开发…...

LeetCode[中等] 74.搜索二维矩阵

给你一个满足下述两条属性的 m x n 整数矩阵&#xff1a; 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target &#xff0c;如果 target 在矩阵中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。…...

overleaf如何下载论文的pdf

用overleaf写完英文论文后&#xff0c;要将论文保存为PDF格式 点击图片中的下载按钮 然后选择一个路径保存论文的PDF格式即可。...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言&#xff1a; 在人工智能快速发展的浪潮中&#xff0c;快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型&#xff08;LLM&#xff09;。该模型代表着该领域的重大突破&#xff0c;通过独特方式融合思考与非思考…...

Cinnamon修改面板小工具图标

Cinnamon开始菜单-CSDN博客 设置模块都是做好的&#xff0c;比GNOME简单得多&#xff01; 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

【 java 虚拟机知识 第一篇 】

目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...

基于PHP的连锁酒店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...

倒装芯片凸点成型工艺

UBM&#xff08;Under Bump Metallization&#xff09;与Bump&#xff08;焊球&#xff09;形成工艺流程。我们可以将整张流程图分为三大阶段来理解&#xff1a; &#x1f527; 一、UBM&#xff08;Under Bump Metallization&#xff09;工艺流程&#xff08;黄色区域&#xff…...

Python环境安装与虚拟环境配置详解

本文档旨在为Python开发者提供一站式的环境安装与虚拟环境配置指南&#xff0c;适用于Windows、macOS和Linux系统。无论你是初学者还是有经验的开发者&#xff0c;都能在此找到适合自己的环境搭建方法和常见问题的解决方案。 快速开始 一分钟快速安装与虚拟环境配置 # macOS/…...

前端工具库lodash与lodash-es区别详解

lodash 和 lodash-es 是同一工具库的两个不同版本&#xff0c;核心功能完全一致&#xff0c;主要区别在于模块化格式和优化方式&#xff0c;适合不同的开发环境。以下是详细对比&#xff1a; 1. 模块化格式 lodash 使用 CommonJS 模块格式&#xff08;require/module.exports&a…...

高抗扰度汽车光耦合器的特性

晶台光电推出的125℃光耦合器系列产品&#xff08;包括KL357NU、KL3H7U和KL817U&#xff09;&#xff0c;专为高温环境下的汽车应用设计&#xff0c;具备以下核心优势和技术特点&#xff1a; 一、技术特性分析 高温稳定性 采用先进的LED技术和优化的IC设计&#xff0c;确保在…...