Django 从环境搭建到第一个项目

作为一名刚接触 Django 的开发者,我在学习过程中整理了这份入门笔记,涵盖 Django 框架基础、环境搭建、第一个项目创建以及核心配置,希望能为同样刚入门的小伙伴提供清晰的学习思路。

一、Django 框架基础认知

在开始实际操作前,先对 Django 框架有个基础了解,能让后续学习更顺畅。

Django 遵循 MTV(模型 - 模板 - 视图)架构,这是从 MVC(模型 - 视图 - 控制器)模式演变而来,各组件功能明确:

1.1 什么是 Django

Django 是一款高级 Python Web 开源框架,发音为dʒæŋgəʊ。它由经验丰富的开发人员构建,解决了 Web 开发中诸多常见问题,能让开发者专注于应用程序编写,无需 “重复造轮子”。近年来,随着 Python 地位的上升,Django 发展迅猛,版本更新迭代快。截至目前,最新版本是 5.2.5 LTS,官方规划未来两年将更新到 6.0 LTS 版本。

1.2 Django 的 MTV 架构

  • 模型(Model):处于 MTV 模式底层,是数据存取层。负责处理与数据相关的所有事务,比如数据的存取、数据有效性验证以及数据间关系处理等,还能通过 ORM(对象关系映射)建立业务对象与数据库的映射。
  • 模板(Template):位于 MTV 模式顶层,是表现层。负责处理与表现相关的操作,简单来说就是决定数据如何在页面或其他类型文档中显示,比如生成 HTML 页面。
  • 视图(View):处于 MTV 模式中间层,是业务逻辑层。负责存取模型以及调取合适模板的相关逻辑,是连接模型和模板的桥梁,仅负责选择要展示的数据并传递到模板,不处理用户输入。
  • URL 分发器:虽未在 MTV 名称中体现,但至关重要,相当于 MVC 模式中的控制器(Controller)。它使用正则表达式匹配 URL,将 URL 页面请求分发给不同的视图处理,再由视图调用相应的模型和模板。

下面是一个简化的表格,用于展示MVC(Model-View-Controller)、MVT(Model-View-Template)三种设计模式的主要区别

特性/设计模式

MVC(模型-视图-控制器)

MVT(模型-视图-模板)

主要目标

分离数据管理、业务逻辑与界面呈现。

通过清晰的分离关注点来简化Web应用开发。

组件角色

- Model: 数据存取层。

- View: 用户界面层。

- Controller: 接收用户输入并调用Model和View进行适当响应。

- Model: 数据存取层。

- View: 视图层,负责展示逻辑。

- Template: 定义了如何将数据渲染到HTML页面上。

数据流动

用户交互 -> Controller -> Model -> View

用户交互 -> View -> Model -> Template

适用场景

适用于需要复杂用户交互的应用程序。

主要用于Web开发,尤其是Django框架中。

优点

提供良好的分离关注点,便于代码维护。

简化Web应用开发流程,易于理解。

缺点

可能导致过多的事件监听器和回调函数。

相比MVC,灵活性较低,特别是在非Web上下文中。

MVC和MVT的图示:

①MVC图示:

②MVT图示:

1.3 Django 的核心特点

Django 能成为流行的 Web 框架,离不开其强大的特点:

  • 全功能框架:提供从数据库到模板的完整解决方案,无需额外整合大量第三方工具。
  • ORM 系统:强大的对象关系映射功能,简化数据库操作,开发者无需编写复杂的 SQL 语句,用 Python 代码就能操作数据库。
  • 自动化管理后台:可自动生成管理界面,方便对网站内容进行管理,大大减少后台开发工作量。
  • 灵活路由系统:支持灵活的 URL 配置,能轻松实现 URL 与视图的映射。
  • 强大模板系统:拥有强大的模板引擎,支持模板继承,便于实现页面风格统一和代码复用。
  • 便捷表单处理:简化表单的创建和验证流程,降低表单开发难度。
  • 内置认证系统:提供内置的用户认证和权限管理功能,保障网站安全。
  • 全面安全特性:能有效防止 SQL 注入、XSS(跨站脚本)、CSRF(跨站请求伪造)等常见网络攻击。
  • 国际化支持:内置多语言支持,便于开发多语言版本的网站。
  • 实用缓存框架:支持多种缓存后端,可提高网站访问速度,减轻服务器压力。

二、创建第一个 Django 项目(两种方式)

安装好开发环境后,就可以创建第一个 Django 项目了,这里介绍两种常用的创建方式:通过命令行和通过 PyCharm。

2.1 安装 Django 框架

完成上述准备工作后,就可以安装 Django 框架了。

1.打开命令行,输入以下命令安装指定版本(5.2.5)的 Django:

python -m pip install Django==5.2.5

    2.安装完成后,验证是否安装成功,输入命令:

    django-admin --version

    如果能显示 Django 的版本信息,说明 Django 安装成功。

    安装好开发环境后,就可以创建第一个 Django 项目了,这里介绍两种常用的创建方式:通过命令行和通过 PyCharm。

    2.2  通过命令行创建 Django 项目

    1. 创建项目目录:首先在命令行中切换到想要存放项目的目录,然后输入以下命令创建一个名为 “django_project” 的项目目录,并进入该目录:

    mkdir django_project
    cd django_project

    2.创建虚拟环境:为了避免项目依赖冲突,建议为每个 Django 项目创建独立的虚拟环境。输入以下命令创建名为 “venv” 的虚拟环境:

    python -m venv venv

    什么是虚拟环境?

    venv 就是 Python 的“项目隔离罩”,让你每个项目用自己的 Python 和依赖,干净、可控、不打架

    3.激活虚拟环境

    • Windows 系统:
    venv\Scripts\activate

    • macOS/Linux 系统(主播的电脑是windows系统,所以这个就没有演示了):
    source venv/bin/activate

    激活成功后,命令行提示符前会显示 “(venv)”。

    4. 安装 Django:虽然之前已经安装过 Django,但为了确保虚拟环境中使用的是指定版本,可再次输入安装命令(若虚拟环境中已存在,会提示已安装):

    pip install Django==5.2.5

    5.创建 Django 项目:输入以下命令创建一个名为 “mysite” 的 Django 项目:

    django-admin startproject mysite

    6.进入项目目录

    cd mysite

    7.运行开发服务器:输入命令启动 Django 开发服务器:

    python manage.py runserver

    启动成功后,在浏览器中输入 “http://127.0.0.1:8000/”,若能看到 Django 的默认欢迎页面,说明项目创建并启动成功。

    2.3  通过 PyCharm 创建 Django 项目

    1. 打开 PyCharm,点击 “New Project”。
    2. 在弹出的窗口中,选择 “Django” 选项,然后设置项目的名称(如 “mysite”)和项目存放位置。
    3. 选择 Python 解释器,建议选择之前创建的虚拟环境中的 Python 解释器(若未创建,可在此时通过 “New environment” 选项创建)。
    4. 点击 “Create” 按钮,等待项目初始化完成。
    5. 项目初始化完成后,点击 PyCharm 工具栏中的 “Run” 按钮(或右键点击项目中的 “manage.py” 文件,选择 “Run 'manage.py runserver'”),启动开发服务器。
    6. 同样在浏览器中输入 “http://127.0.0.1:8000/”,查看是否能正常显示 Django 欢迎页面。

    创建成功的目录:

    三、两种启动项目的方式

    3.1 通过指令运行

    python manage.py runserver

    3.2 通过Pycharm工具运行

    runserver

    成启动后打开http://127.0.0.1:8000/的页面:

    四、总结

    当你按下 python manage.py runserver 的那一刻,本地回显的 127.0.0.1:8000 不只是一个欢迎页面,而是一把钥匙

    • 它打开了 ORM 让你用 Python 写 SQL

    • 它铺好了路由让你随心所欲定制 URL

    • 它准备好了 MTV 模式,等你把创意塞进模板里

    • 它暗装了 admin 后台,只等你一句 admin.site.register() 就让数据库秒变可视化

    今天,我们搭的是“毛坯房”;明天,就能用它长出用户系统、RESTful API、WebSocket 聊天室、甚至一整个 SaaS。

    🎯 评论区立个 Flag 吧
    你打算在这个项目里加什么功能?
    是博客、商城、还是私藏已久的脑洞?
    留言打卡 + 点赞,过两周我来围观:
    谁的 star 最多,我免费出下一篇《从 0 到上线:Django 部署全攻略》!

    如果这篇笔记帮你少踩了坑,点个 ❤️ 与收藏,把干货转给那个还在被“环境配置”劝退的伙伴。
    Django 的世界很大,我们一起把它跑通、玩烂、再重构!

                                                                                                            —— 下次见,代码里相逢。

    本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
    如若转载,请注明出处:http://www.pswp.cn/web/96155.shtml
    繁体地址,请注明出处:http://hk.pswp.cn/web/96155.shtml

    如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

    相关文章

    机器学习实操项目02——Pandas入门(基本操作、创建对象、查看数据、数据选择、处理缺失数据、数据合并、数据分组、时间序列、绘图、文件导出)

    上一章:机器学习实操项目01——Numpy入门(基本操作、数组形状操作、复制与试图、多种索引技巧、线性代数) 下一章: 机器学习核心知识点目录:机器学习核心知识点目录 机器学习实战项目目录:【从 0 到 1 落地…

    springboot超市货品信息管理系统

    开发环境开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Mave…

    c# .net中using的使用

    using示例代码 示例代码1: using HttpContent httpContent new StringContent(postData, Encoding.UTF8);示例代码2: using (var process Process.Start(info)) {output process.StandardOutput.ReadToEnd(); }示例代码1写法: using HttpC…

    STM32HAL 快速入门(二十):UART 中断改进 —— 环形缓冲区解决数据丢失

    前言 大家好,这里是 Hello_Embed。上一篇我们用中断方式实现了 UART 收发,但发现一个关键问题:若 CPU 在处理其他任务时未及时重新使能接收中断,新数据会覆盖旧数据,导致丢失。本篇的核心改进方案是 ——“中断接收 环…

    使用Docker搭建MaxKB智能体平台

    1、系统要求 详见: https://maxkb.cn/docs/v2/quick_start https://maxkb.cn/docs/v2/installation/offline_installtion https://maxkb.cn/docs/v2/installation/online_installtion 2、安装Docker 合集:Docker安装与使用 3、安装MaxKB 详见&#xf…

    宠物电商痛点破解:智能客服的关键作用

    在宠物电商蓬勃发展的当下,行业面临着诸多痛点。从客户咨询的高频率到订单处理的复杂性,每一个环节都可能成为制约发展的瓶颈。而智能客服的出现,为这些痛点提供了有效的解决方案,成为宠物电商行业不可或缺的助力。一、宠物电商的…

    基于GraphRAG+Ollama验证知识图谱和检索增强融合

    之前介绍了知识图谱与检索增强的融合探索GraphRAG。 https://blog.csdn.net/liliang199/article/details/151189579 这里尝试在CPU环境,基于GraphRAGOllama,验证GraphRAG构建知识图谱和检索增强查询过程。 1 环境安装 1.1 GraphRAG安装 在本地cpu环境…

    36页可编辑PPT | 某制造集团灯塔工厂解决方案

    制造业企业订单种类多,传统产线换型慢,库存高,财务压力大。工人年龄大,招工难,工资涨,效率低。海外对手用低价和柔性产线抢单,国内同行用数字化缩短交期。企业想扩产,又怕投资重、回…

    Redis 非缓存核心场景及实例说明

    Redis 非缓存核心场景及实例说明 一、分布式锁 分布式锁用于解决分布式系统中多节点竞争同一资源的问题,确保操作原子性。Redis 实现分布式锁的核心思路是利用键的唯一性和原子命令,通常基于 Redisson 框架简化实现(底层依赖 Redis 命令&…

    【技术教程】如何将ONLYOFFICE文档集成到使用Spring Boot框架编写的Java Web应用程序中

    在现代协作办公环境中,将功能强大的文档编辑器无缝集成到自有业务系统中,已成为提升工作效率和用户体验的关键需求。ONLYOFFICE 文档服务器提供了一套成熟的在线文档编辑解决方案,而 Java Spring Boot 则是构建高效、模块化 Web 应用的热门框…

    openharmony之AV_CodeC音视频编解码模块详解(二)

    1. 音频解码器函数调用流程 1.1 音频解码器架构概览 decoder:解码器 encoder:编码器 前面文章介绍了关于openHarmony的AV_CodeC模块,这篇文章将详细讲解编解码时函数的调用流程 音频解码器采用插件化架构,核心实现位于: services/engine/codec/audio/decoder/audio_ffmpeg…

    PDF24 Creator:免费的多功能PDF工具

    在处理PDF文件时,一个功能强大且免费的PDF工具是许多用户的首选。PDF24 Creator作为一款免费的PDF工具,提供了丰富的功能,帮助用户创建、编辑和转换PDF文件,满足从初学者到专业用户的各种需求。它不仅支持PDF与Word、Excel等15种以…

    VBA 中使用 ADODB 操作 SQLite 插入中文乱码问题

    问题 使用 VBA 的 ADODB 对象的 command 对象、parameter 对象,插入的中文数据为乱码 驱动下载、安装、引用 驱动网址(下载路径) 使用的 ODBC 驱动(需要梯子才能下载,感谢大佬开源) http://www.ch-werner.de/sqliteodbc/ 版本…

    执行select * from a where rownum<1;,数据库子进程崩溃,业务中断。

    文章目录环境症状触发条件解决方案环境 系统平台&#xff1a;Linux x86-64 Red Hat Enterprise Linux 7 版本&#xff1a;4.5.2 症状 执行select * from a where rownum<1;&#xff0c;数据库子进程崩溃&#xff0c;业务中断。 触发条件 select 和 where条件带有rownum…

    python库 Py2app 的详细使用(将 Python 脚本变为 MacOS 独立软件包)

    更多内容请见: python3案例和总结-专栏介绍和目录 文章目录 一、Py2app 概述 1.1 Py2app 介绍 1.2 安装 1.3 替代工具推荐 二、基础使用 2.1 最简单的 setup.py 文件 2.2 完整示例 2.3 配置选项详解 2.4 完整项目案例 2.5 打包为单文件应用(可选) 三、高级配置 3.1 处理特定…

    NTP配置为客户端广播监听模式

    前言 项目需求&#xff1a; 使能ntp为客户端模式&#xff0c;能监服务端广播模式发出的ntp报文&#xff0c;计算出服务端的时间与客户端的时间偏差并上报。 开发状况&#xff1a; 交叉编译ntp源码&#xff0c;将修改后的ntpd进程部署到设备上作为客户端完成项目需求 如何操作&a…

    Claude-Flow 使用指南

    Claude-Flow 不仅仅是一个工具&#xff0c;更是一个强大的AI驱动开发编排平台。本问初步带您深入了解 Claude-Flow v2.0.0 Alpha 的强大功能&#xff0c;助您在AI开发领域如虎添翼。1. 简介&#xff1a;什么是 Claude-Flow&#xff1f; Claude-Flow v2 Alpha 是一个企业级的AI编…

    系统梳理 Test-Time Compute 的主要实现路径

    编者按&#xff1a; AI 真的在“思考”吗&#xff1f;当模型面对数学推理、代码生成或复杂决策时&#xff0c;它是如何一步步推演出答案的&#xff1f;如果你曾困惑于大模型在关键任务中表现不稳定、缺乏可解释性&#xff0c;甚至生成结果难以验证&#xff0c;那么你并不孤单。…

    vue 经常写的echarts图表模块结构抽取

    vue 经常写的echarts图表模块结构抽取将项目中经常写的结构抽取一下, 方便以后用 表头包含标题和右侧操作部分下面为图表 <div class"chartBox"><div class"chartheadbox"><div class"chartheadleft">这是图表标题</div>…

    主流的开源协议(MIT,Apache,GPL v2/v3)

    文章目录1. MIT 协议 (MIT License)2. Apache 2.0 协议 (Apache License 2.0)3. GPL v2 协议 (GNU General Public License v2)“开源协议选择指南”的流程图 flowchart TDA[开始选择开源协议] --> B{是否要求修改后必须开源?<br>(是否具有 传染性?)};B -- 是&…