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

Django简介与虚拟环境安装Django

目录

1.Django简介

1.1 Django 的核心特点

1.2 Django 的核心组件

1.3 Django 的应用场景

1.4 总结

2.基础环境建立

2.1 创建虚拟环境

2.1.1 使用 virtualenv 创建虚拟环境

2.1.2 使用 venv 创建虚拟环境

2.2 激活虚拟环境

2.2.1 在 Windows 上

2.2.2 在 macOS 或 Linux 上

2.3 安装 Django

2.4 创建 Django 项目

2.5 启动开发服务器

2.6 停用虚拟环境

2.7 保存依赖

2.8 小结


1.Django简介

Django 是一个开源的 Python Web 框架,它是为帮助开发者快速构建高效、可扩展且安全的 Web 应用而设计的。Django 强调 "DRY"(Don't Repeat Yourself) 原则,尽量减少代码重复,并提供很多内置功能,帮助开发者快速实现复杂的 Web 应用。

1.1 Django 的核心特点

(1)快速开发

  • Django 的设计目标之一是让开发者能够快速创建 Web 应用。它提供了大量的内置功能和工具,帮助开发者避免从零开始编写常见的 Web 应用组件。
  • 例如,Django 提供了 自动生成的后台管理系统(Django Admin),开发者只需要定义数据模型(Model)和简单配置,就可以获得强大的数据管理界面。

(2)强大的 ORM(对象关系映射)

  • Django 提供了一个 ORM(Object-Relational Mapping)系统,让开发者无需直接写 SQL 查询,便可以通过 Python 对象进行数据库操作。
  • 你只需要定义模型(Model)类,Django 会自动为你创建对应的数据库表,并且支持通过 Python 代码对数据进行增删改查(CRUD)操作。

(3)自动化的管理后台

  • Django 自带的管理后台非常强大,开发者只需要简单地注册模型(Model)到管理后台,就可以自动获得一个功能完整的界面用于管理数据。
  • 后台支持数据的增删改查(CRUD),并提供了过滤、搜索等高级功能。

(4)安全性

  • Django 提供了多种内建的安全功能,帮助开发者防止常见的 Web 安全问题,如:
    • CSRF(跨站请求伪造)防护:Django 默认启用 CSRF 保护,防止恶意网站伪造用户请求。
    • XSS(跨站脚本攻击)防护:Django 自动转义模板中的变量,避免 HTML 注入攻击。
    • SQL 注入防护:通过 ORM 进行数据库操作,Django 自动防止 SQL 注入攻击。
    • 密码管理:Django 使用加密的哈希算法来存储密码,确保用户数据的安全。

(5)可扩展性和灵活性

  • Django 是 模块化的,开发者可以根据需要选择合适的功能进行扩展。
  • 例如,Django 提供了多个扩展包来处理认证、RESTful API、文件上传、缓存等功能。
  • 你也可以自己创建 应用(App),并将它们集成到主项目中。

(6)良好的文档和社区支持

  • Django 有着 极其完善的官方文档,它包含了从基础入门到高级功能的全面指南,帮助开发者快速学习和掌握 Django。
  • Django 社区非常活跃,你可以通过官方论坛、Stack Overflow 等途径获取支持,解决开发中的问题。

1.2 Django 的核心组件

(1)Model(模型)

  • Django 提供了 ORM 系统来处理与数据库的交互。模型定义了数据的结构,并通过 Django 的 ORM 系统自动与数据库进行交互。
  • 示例
    from django.db import modelsclass Product(models.Model):name = models.CharField(max_length=100)price = models.DecimalField(max_digits=10, decimal_places=2)description = models.TextField()def __str__(self):return self.name
    

(2)View(视图)

  • 视图是请求和响应之间的核心处理单元。它负责接收 HTTP 请求,处理请求并返回响应。
  • 在 Django 中,视图可以是函数视图(FBV)或类视图(CBV)。
  • 示例(函数视图):
    from django.http import HttpResponsedef home(request):return HttpResponse("Welcome to the homepage!")
    

(3)Template(模板)

  • Django 提供了模板系统来动态渲染 HTML 页面。模板系统允许开发者插入动态内容(例如数据库查询结果)并控制页面结构。
  • 示例(模板):
    <h1>{{ title }}</h1>
    <p>Welcome to the site, {{ user.username }}</p>
    

(4)URL Dispatcher(URL 路由)

  • Django 使用 URL 路由系统将 URL 映射到视图函数或视图类。路由系统可以匹配动态 URL,例如 URL 中带有参数。
  • 示例
    from django.urls import path
    from . import viewsurlpatterns = [path('', views.home, name='home'),path('product/<int:id>/', views.product_detail, name='product_detail'),
    ]
    

(5)Admin(管理后台)

  • Django 提供了一个强大的自动生成的管理后台,开发者只需注册模型,便可以获得一个全面的数据管理界面。
  • 示例(注册模型):
    from django.contrib import admin
    from .models import Productadmin.site.register(Product)
    

(6)Form(表单)

  • Django 提供了一个表单框架,用于生成 HTML 表单、处理用户提交的数据并验证数据。
  • 示例
    from django import formsclass ProductForm(forms.Form):name = forms.CharField(max_length=100)price = forms.DecimalField(max_digits=10, decimal_places=2)description = forms.CharField(widget=forms.Textarea)
    

1.3 Django 的应用场景

  • 快速构建 Web 应用:Django 提供了许多内建工具,可以让开发者快速搭建 Web 应用,适合从小型博客到大型复杂应用的开发。
  • 企业级应用:Django 强调可扩展性和安全性,适合处理复杂的企业级应用,如电商平台、社交网络等。
  • RESTful API:Django 可以与 Django REST Framework 配合使用,快速构建 API 服务,适合前后端分离的应用。

1.4 总结

Django 是一个功能强大且易用的 Web 框架,旨在让开发者能够快速构建高质量的 Web 应用。通过 Django,你可以避免重复造轮子,专注于业务逻辑的实现。Django 内置了 ORM、表单处理、安全性保护、自动化管理后台等功能,极大地简化了 Web 开发过程。

2.基础环境建立

2.1 创建虚拟环境

在此之前,可以创建一个文件夹来存放,如创建一个Django文件夹来存放项目。

首先,确保你的 Python 环境中已经安装了 virtualenv 或者使用 Python 自带的 venv 模块来创建虚拟环境,我采用了第二种。

如果你还没有安装 virtualenv,可以通过以下命令来安装:

pip install virtualenv

但是,Python 3.3 及以上版本已经自带了 venv 模块,因此你也可以直接使用 venv 来创建虚拟环境。

2.1.1 使用 virtualenv 创建虚拟环境

在你项目的根目录下,执行以下命令来创建一个虚拟环境(假设虚拟环境的名字是 venv):

virtualenv venv

2.1.2 使用 venv 创建虚拟环境

如果你使用的是 Python 3 自带的 venv 模块,可以这样创建虚拟环境:

python -m venv venv

这将创建一个名为 venv 的文件夹,其中包含虚拟环境的所有必要文件。

2.2 激活虚拟环境

2.2.1 在 Windows 上

在命令行中,运行以下命令来激活虚拟环境:

venv\Scripts\activate

2.2.2 在 macOS 或 Linux 上

在终端中,运行以下命令来激活虚拟环境:

source venv/bin/activate

激活虚拟环境后,你会看到命令行提示符前面会显示 (venv),表示当前虚拟环境已激活。

2.3 安装 Django

虚拟环境激活后,安装 Django:

pip install django

这样,Django 会安装在虚拟环境中,而不会影响系统级别的 Python 环境。

2.4 创建 Django 项目

虚拟环境激活后,继续按照之前的步骤来创建 Django 项目和应用。假设你要创建一个名为 myproject 的 Django 项目:

django-admin startproject myproject

cd myproject

2.5 启动开发服务器

在项目目录下,运行以下命令启动开发服务器:

python manage.py runserver

这时,你的 Django 项目应该在虚拟环境中成功运行。

访问127.0.0.1:8000,可以看到如下信息,到这步已经成功安装,下面内容便可以略过:

2.6 停用虚拟环境

当你完成工作并希望退出虚拟环境时,可以运行:

deactivate

这样,虚拟环境就会被禁用,返回到系统默认的 Python 环境。

2.7 保存依赖

为了方便其他人或者你自己在不同机器上安装相同的依赖,你可以创建一个 requirements.txt 文件,该文件包含所有项目依赖的库。使用以下命令生成 requirements.txt

pip freeze > requirements.txt

然后,其他人在设置项目时,只需运行以下命令来安装所有依赖:

pip install -r requirements.txt

2.8 小结

  1. 使用 virtualenvvenv 创建虚拟环境。
  2. 激活虚拟环境并安装 Django。
  3. 在虚拟环境中进行开发,避免与系统 Python 环境发生冲突。
  4. 使用 deactivate 停用虚拟环境,并使用 requirements.txt 管理项目的依赖。

相关文章:

Django简介与虚拟环境安装Django

目录 1.Django简介 1.1 Django 的核心特点 1.2 Django 的核心组件 1.3 Django 的应用场景 1.4 总结 2.基础环境建立 2.1 创建虚拟环境 2.1.1 使用 virtualenv 创建虚拟环境 2.1.2 使用 venv 创建虚拟环境 2.2 激活虚拟环境 2.2.1 在 Windows 上 2.2.2 在 macOS 或 …...

Redis延迟队列详解

以下是对 Redis 延迟队列的详细解释&#xff1a; 一、什么是 Redis 延迟队列 Redis 延迟队列是一种使用 Redis 实现的消息队列&#xff0c;其中的消息在被消费之前会等待一段时间&#xff0c;这段时间就是延迟时间。延迟队列常用于一些需要延迟处理的任务场景&#xff0c;例如订…...

一文大白话讲清楚webpack基本使用——2——css相关loader的配置和使用

一文大白话讲清楚webpack基本使用——2——css相关loader的配置和使用 1. 建议按文章顺序从头看是看 第一篇&#xff1a;一文大白话讲清楚啥是个webpack第二篇&#xff1a;一文大白话讲清楚webpack基本使用——1——完成webpack的初步构建然后看本篇&#xff0c;Loader的配置…...

第二代增强-采购申请屏幕增强

这篇文章可能有点乱&#xff0c;但是都是学习的一个过程&#xff0c;问题就是在ME52N修改采购申请增强字段之后&#xff0c;点击保存之后无法更新到数据库&#xff0c;困扰了很久&#xff0c;终于解决了&#xff0c;特此记录 文章目录 需求创建增强结构测试屏幕ZXM02TOP创建屏幕…...

图论DFS:黑红树

我的个人主页 {\large \mathsf{{\color{Red} 我的个人主页} } } 我的个人主页 往 {\color{Red} {\Huge 往} } 往 期 {\color{Green} {\Huge 期} } 期 文 {\color{Blue} {\Huge 文} } 文 章 {\color{Orange} {\Huge 章}} 章 DFS 算法&#xff1a;记忆化搜索DFS 算法&#xf…...

零基础一篇打通Vue极速通关教程

文章目录 写给零基础看的Vue极速掌握教程第1章 Vue简介1.1 Vue 概述1.2 MVVM 模式1.3 WebStorm开发工具1.3.1 WebStorm简介1.3.2 集成Vue开发调试工具 第2章 Vue的事件绑定2.1 Vue基本使用2.1.1 插值表达式2.1.2 注意事项 2.2 Vue事件绑定2.1.1 点击事件2.2.2 键盘事件2.2.3 移…...

商城系统中的常见 BUG

以下是商城系统中一些常见的 BUG&#xff1a; 功能与操作类 支付问题&#xff1a;如无法成功完成支付&#xff0c;支付过程中出现延迟、错误或订单重复支付等&#xff0c;还可能因网络问题导致支付失败或数据不一致。 登录 / 注册问题&#xff1a;用户在注册或登录时可能遇到…...

下定决心不去读研了。。。

大家好&#xff0c;我是苍何。 之前发表过一篇文章&#xff0c;表达了自己读研的困惑和纠结&#xff0c;得到了大家很多的建议&#xff0c;也引起了很多人的共鸣&#xff0c;在留言区分享了自己的故事&#xff0c;看着这些故事&#xff0c;我觉得都够苍何写一部小说了。 可惜苍…...

100个网络基础知识

1)什么是链接? 链接是指两个设备之间的连接。它包括用于一个设备能够与另一个设备通信的电缆类型和协议。 2)OSI 参考模型的层次是什么? 有 7 个 OSI 层&#xff1a;物理层&#xff0c;数据链路层&#xff0c;网络层&#xff0c;传输层&#xff0c;会话层&#xff0c;表示…...

庄小焱——2024年博文总结与展望

摘要 大家好&#xff0c;我是庄小焱。岁末回首&#xff0c;2024 年是我在个人成长、博客创作以及生活平衡方面收获颇丰的一年。这一年的经历如同璀璨星辰&#xff0c;照亮了我前行的道路&#xff0c;也为未来的发展奠定了坚实基础。 1. 个人成长与突破 在 2024 年&#xff0c…...

高通8255 Android STR 启动失败要因分析调查

目录 背景&#xff1a; 调查过程&#xff1a; 步骤1&#xff1a; slog2info | grep vmm_service 步骤2&#xff1a; slog2info | grep qvm 总结&#xff1a; 解决方案 背景&#xff1a; 调试高通8255 STR的STR过程中发现Android和QNX进入STR状态后&#xff0c;脱出STR时…...

Qt QML专栏目录结构

第1章 走进Qt Quick的世界... 4 ★1.4 Qt Quick应用... 4 ★1.5 Qt Quick UI项目(qmlproject工程) 4 第2章 QML语法... 4 ★2.2 import导入语句... 4 ★2.3 QML类型系统... 5 ★2.4 对象特性&#xff08;Attributes&#xff09;... 6 三个等于号JavaScript语…...

“深入浅出”系列之FFmpeg:(3)音视频开发的学习路线和必备知识

一、岗位要求 音视频开发属于我自己想要学习的板块&#xff0c;我想知道公司招聘音视频开发工程师所需要的条件&#xff0c;于是我就从招聘网站上找来了几个有关音视频开发的岗位需求&#xff0c;内容仅供参考&#xff1a; &#xff08;1&#xff09;算法工程师-视频编解码 …...

Webpack简述

一、为什么要构建工具 人类喜欢书写的代码以及开发方式计算机不喜欢&#xff0c;构建工具的作用就是让人类舒舒服服写自己喜欢的代码&#xff0c;然后一打包生成计算机喜欢的代码 第一个webpack自身仅仅是将我们引入的模块打包成一个文件&#xff08;编译import&#xff09;&am…...

解决 Error: Invalid or corrupt jarfile day04_studentManager.jar 报错问题

在 Java 开发过程中&#xff0c;我们可能会遇到这样的报错信息&#xff1a;Error: Invalid or corrupt jarfile day04_studentManager.jar。这个错误通常表示 day04_studentManager.jar 文件可能已损坏或无效&#xff0c;下面将为大家详细介绍如何解决这个问题。 一、错误点分…...

ACL基础理论

ACL ——访问控制列表 ACL属于策略的一种 ACL访问控制列表的作用&#xff1a; 访问控制&#xff1a;在路由器流量流入或流出的接口上&#xff0c;匹配流量&#xff0c;然后执行设定好的动作&#xff1a;permit&#xff08;允许&#xff09;、deny&#xff08;拒绝&#xff…...

庄周梦蝶1

和尚大概的意思如下&#xff1a;人的每一个梦境都是一个世界&#xff0c;这些世界统称三千世界。每一个世界当中所谓时间的跨度不同&#xff0c;发展程度不同&#xff0c;但是里面都有一个你。这些世界是同时存在的&#xff0c;所以不存在未来过去和现在&#xff0c;因为你就存…...

使用SIPP发起媒体流性能测试详解

使用SIPP发起媒体流性能测试详解 一、SIPP工具简介二、测试前的准备三、编写测试脚本四、运行测试五、分析测试结果六、总结SIPP(SIP Performance Protocol)是一个开源工具,专门用于SIP(Session Initiation Protocol)协议的性能测试和基准测试。SIP是一种用于控制多媒体通…...

瑞利衰落信道机理的详解

瑞利衰落信道&#xff08;Rayleigh fading channel&#xff09;是一种无线电信号传播环境的统计模型&#xff0c;用于描述信号在无线信道中的传播特性。这种模型假设信号通过无线信道后&#xff0c;其信号幅度是随机的&#xff0c;即“衰落”&#xff0c;并且其包络服从瑞利分布…...

PyTorch使用教程(2)-torch包

1、简介 torch包是PyTorch框架最外层的包&#xff0c;主要是包含了张量的创建和基本操作、随机数生成器、序列化、局部梯度操作的上下文管理器等等&#xff0c;内容很多。我们基础学习的时候&#xff0c;只有关注张量的创建、序列化&#xff0c;随机数、张量的数学数学计算等常…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向&#xff0c;可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

面向无人机海岸带生态系统监测的语义分割基准数据集

描述&#xff1a;海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而&#xff0c;目前该领域仍面临一个挑战&#xff0c;即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议&#xff0c;专门用于在数字音频设备之间传输数字音频数据。它由飞利浦&#xff08;Philips&#xff09;公司开发&#xff0c;以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

Windows 下端口占用排查与释放全攻略

Windows 下端口占用排查与释放全攻略​ 在开发和运维过程中&#xff0c;经常会遇到端口被占用的问题&#xff08;如 8080、3306 等常用端口&#xff09;。本文将详细介绍如何通过命令行和图形化界面快速定位并释放被占用的端口&#xff0c;帮助你高效解决此类问题。​ 一、准…...

【技巧】dify前端源代码修改第一弹-增加tab页

回到目录 【技巧】dify前端源代码修改第一弹-增加tab页 尝试修改dify的前端源代码&#xff0c;在知识库增加一个tab页"HELLO WORLD"&#xff0c;完成后的效果如下 [gif01] 1. 前端代码进入调试模式 参考 【部署】win10的wsl环境下启动dify的web前端服务 启动调试…...