Python学习笔记--Django的安装和简单使用(一)

news2025/7/14 10:54:30

一.简介

  • Django 是一个用于构建 Web 应用程序的高级 Python Web 框架。
  • Django 提供了一套强大的工具和约定,使得开发者能够快速构建功能齐全且易于维护的网站。
  • Django 遵守 BSD 版权,初次发布于 2005 年 7 月, 并于 2008 年 9 月发布了第一个正式版本 1.0 。
  • Django 采用了 MVT 的软件设计模式,即模型(Model),视图(View)和模板(Template)。

二.Django与Python版本对应关系

Django 与 Python 版本兼容表

Django 版本Python 版本要求备注
Django 5.0Python 3.10, 3.11, 3.12最新稳定版(2024年发布)
Django 4.2 LTSPython 3.8, 3.9, 3.10, 3.11长期支持版(支持到 2026年4月)
Django 4.1Python 3.8, 3.9, 3.10已结束维护(EOL)
Django 4.0Python 3.8, 3.9, 3.10已结束维护(EOL)
Django 3.2 LTSPython 3.6, 3.7, 3.8, 3.9, 3.10长期支持版(支持到 2024年4月)
Django 3.1Python 3.6, 3.7, 3.8, 3.9已结束维护(EOL)
Django 3.0Python 3.6, 3.7, 3.8已结束维护(EOL)
Django 2.2 LTSPython 3.5, 3.6, 3.7, 3.8已结束维护(2022年4月)

关键说明

  1. LTS 版本(长期支持版):

    • 推荐生产环境使用,提供 3年 安全更新(如 Django 4.2、3.2)。

    • 非 LTS 版本仅维护到下一个版本发布(通常 8个月)。

  2. Python 版本建议

    • 新项目建议使用 Python 3.10+ + Django 4.2/5.0

    • 旧项目维护可参考 LTS 版本(如 Django 3.2 + Python 3.8)。

  3. 数据库兼容性

    • Django 5.0 移除了对 PostgreSQL 11、MySQL 5.7 等旧数据库的支持。

如何选择?

  • 学习/新项目 → Django 5.0 + Python 3.12

  • 企业生产环境 → Django 4.2 LTS + Python 3.10/3.11

  • 兼容旧系统 → Django 3.2 LTS + Python 3.8

三.安装

安装前最好检查版本兼容性,对照上面的表格,选择与本地python版本匹配的Django版本

查看已安装的 Python 版本:

python --version
# 或
python3 --version

 

安装指定版本的 Django,若未指定,则安装最新版本

pip install django==4.2.6  # 例如安装 Django 4.2 LTS

 未指定版本安装

 验证安装

 python -m django --version

 出现下图的提示则表明安装成功

 四.使用

安装 Django 之后,就有了可用的管理工具 django-admin,Windows 如果没有配置环境变量可以用 django-admin创建项目

 django-admin startproject hello_django

创建完成后的项目结构

目录说明:

  • hello_django: 项目的容器。
  • manage.py: 一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互。
  • hello_django/__init__.py: 一个空文件,告诉 Python 该目录是一个 Python 包。
  • hello_django/asgi.py: 一个 ASGI 兼容的 Web 服务器的入口,以便运行你的项目。
  • hello_django/settings.py: 该 Django 项目的设置/配置。
  • hello_django/urls.py: 该 Django 项目的 URL 声明; 一份由 Django 驱动的网站"目录"。
  • hello_django/wsgi.py: 一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目。

接下来我们进入 hello_django目录输入以下命令,启动服务器:

 python manage.py runserver 0.0.0.0:8000

 

0.0.0.0 让其它电脑可连接到开发服务器,8000 为端口号。如果不说明,那么端口号默认为 8000。

在浏览器输入服务器的 ip(这里我们输入本机 IP 地址: 127.0.0.1:8000) 及端口号,如果正常启动,就会出现Django的欢迎页面。

视图和 URL 配置

在上面创建的 hello_django 目录下的 hello_django目录新建一个 views.py 文件,

并输入下面的代码:

from django.http import HttpResponse


def hello(request):
    return HttpResponse("Hello Django! ")

 接着,绑定 URL 与视图函数。打开 urls.py 文件,删除原来代码,将以下代码复制粘贴到 urls.py 文件中:

from django.urls import path

from . import views

urlpatterns = [
    path("", views.hello),
]

 刷新浏览器

我们还可以修改以下path中路径:

from django.urls import path

from . import views

urlpatterns = [
    path("hello/", views.hello),
]

注意:项目中如果代码有改动,服务器会自动监测代码的改动并自动重新载入,所以如果你已经启动了服务器则不需手动重启。

path() 函数

Django path() 可以接收四个参数,分别是两个必选参数:route、view 和两个可选参数:kwargs、name。

语法格式:

path(route, view, kwargs=None, name=None)
  • route: 字符串,定义 URL 的路径部分。可以包含变量,例如 <int:my_variable>,以从 URL 中捕获参数并将其传递给视图函数。

  • view: 视图函数,处理与给定路由匹配的请求。可以是一个函数或一个基于类的视图。

  • kwargs(可选): 一个字典,包含传递给视图函数的额外关键字参数。

  • name(可选): 为 URL 路由指定一个唯一的名称,以便在代码的其他地方引用它。这对于在模板中生成 URL 或在代码中进行重定向等操作非常有用。

Django 模板

在 hello_django目录底下创建 templates 目录并建立 demo.html文件, templates 目录要与manage.py文件平级

demo.html写入下面的代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>{{ hello }}</h1>
    <p>Welcome to my website!</p>
</body>
</html>

在<h1>标签中使用了双括号表示变量

接下来我们需要向Django说明模板文件的路径,修改hello_djang/settings.py,修改 TEMPLATES 中的 DIRS 为 [os.path.join(BASE_DIR, 'templates')],如下所示:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

 然后修改 views.py,增加一个新的对象,用于向模板提交数据:

from django.http import HttpResponse
from django.shortcuts import render


def hello(request):
    return HttpResponse("Hello Django ! ")

def template(request):
    context          = {}
    context["hello"] = "Hello Django"
    return render(request, "demo.html", context)

这里使用 render 来替代之前使用的 HttpResponse。render 还使用了一个字典 context 作为参数。

context 字典中元素的键值 hello 对应了模板中的变量 {{ hello }}。这样我们就完成了使用模板来输出数据,从而实现数据与视图分离。然后访问demo路径

模板中变量,列表和字典的使用

项目结构:

在views.py文件中添加下面的代码

# 模板中变量的使用
def template_var(request):
    var_name = "我是一个变量"
    return render(request, "var.html", {"name": var_name})

# 模板中列表的使用
def template_list(request):
    views_list = ["django1","django2","django3"]
    return render(request, "list.html", {"views_list": views_list})

# 模板中字典的使用
def views_dict(request):
    views_dict = {"name":"Tom", "age":12}
    return render(request, "dict.html", {"views_dict": views_dict})

在urls.py中添加下面的代码:

# 变量路径的定义
# urlpatterns = [
#     path("var/", views.template_var, name="template_var"),
# ]

# 列表路径的定义

# urlpatterns = [
#     path("list/", views.template_list, name="template_list"),
# ]

# 字典路径的定义

urlpatterns = [
    path("dict/", views.views_dict, name="views_dict"),
]

 html中代码,通过点操作符获取列表和字典中的元素:

# 变量
<h1>{{ name }}</h1>

# 列表
<p>{{ views_list }}</p>
<p>{{ views_list.0 }}</p>

# 字典
<p>{{ views_dict }}</p>
<p>{{ views_dict.name }}</p>
<p>{{ views_dict.age }}</p>

 浏览器访问效果:

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

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

相关文章

SecureCRT网络穿透/代理

场景 公司的办公VPN软件只有Windows系统版本&#xff0c;没有Macos系统版本&#xff0c;而日常开发过程中需要先登录VPN后&#xff0c;然后才能登录应用服务器。 目的&#xff1a;Macos系统在使用SecureCRT时&#xff0c;登录服务器&#xff0c;需要走Parallels Desktop进行网络…

视频添加字幕脚本分享

脚本简介 这是一个给视频添加字幕的脚本&#xff0c;可以方便的在指定的位置给视频添加不同大小、字体、颜色的文本字幕&#xff0c;添加方式可以直接修改脚本中的文本信息&#xff0c;或者可以提前编辑好.srt字幕文件。脚本执行环境&#xff1a;windowsmingwffmpeg。本方法仅…

OrangePi Zero 3学习笔记(Android篇)4 - eudev编译(获取libudev.so)

目录 1. Ubuntu中编译 2. NDK环境配置 3. 编译 4. 安装 这部分主要是为了得到libudev&#xff08;因为原来的libudev已经不更新了&#xff09;&#xff0c;eudev的下载地址如下&#xff1a; https://github.com/gentoo/eudev 相应的代码最好是在Ubuntu中先编译通过&#…

华为昇腾910B通过vllm部署InternVL3-8B教程

前言 本文主要借鉴&#xff1a;VLLM部署deepseek&#xff0c;结合自身进行整理 下载模型 from modelscope import snapshot_download model_dir snapshot_download(OpenGVLab/InternVL3-8B, local_dir"xxx/OpenGVLab/InternVL2_5-1B")环境配置 auto-dl上选择单卡…

upload-labs靶场通关详解:第三关

一、分析源代码 代码注释如下&#xff1a; <?php // 初始化上传状态和消息变量 $is_upload false; $msg null;// 检查是否通过POST方式提交了表单 if (isset($_POST[submit])) {// 检查上传目录是否存在if (file_exists(UPLOAD_PATH)) {// 定义禁止上传的文件扩展名列表…

星光云720全景VR系统升级版,720全景,360全景,vr全景,720vr全景

星光云720全景VR系统升级版&#xff0c;720全景&#xff0c;360全景&#xff0c;vr全景&#xff0c;720vr全景 星光云全景系统 系统体验地址 https://720.ailemon.cc 星光云全景新版体验地址 全景系统功能简介 基础设置&#xff1a;作品信息&#xff0c;加载样式&#xff…

第十六节:图像形态学操作-顶帽与黑帽变换

一、引言&#xff1a;形态学操作的视觉魔法 在数字图像处理领域&#xff0c;形态学操作犹如一柄精巧的解剖刀&#xff0c;能够精准地提取图像特征、消除噪声干扰&#xff0c;并增强关键细节。OpenCV作为计算机视觉的瑞士军刀&#xff0c;提供了一套完整的形态学处理工具。在掌…

将 iconfont 图标转换成element-plus也能使用的图标组件

在做项目时发现&#xff0c;element-plus的图标组件&#xff0c;不能像文档示例中那样使用 iconfont 的图标。经过研究发现&#xff0c;element-plus的图标封装成了vue组件&#xff0c;组件内容是一个svg&#xff0c;然后以组件的方式引入和调用图标。根据这个思路&#xff0c;…

大模型系列(四)--- GPT2: Language Models are Unsupervised Multitask Learners​

论文链接&#xff1a; Language Models are Unsupervised Multitask Learners 点评&#xff1a; GPT-2采用了与GPT-1类似的架构&#xff0c;将参数规模增加到了15亿&#xff0c;并使用大规模的网页数据集WebText 进行训练。正如GPT-2 的论文所述&#xff0c;它旨在通过无监督语…

ABP vNext + EF Core 实战性能调优指南

ABP vNext EF Core 实战性能调优指南 &#x1f680; 目标 本文面向中大型 ABP vNext 项目&#xff0c;围绕查询性能、事务隔离、批量操作、缓存与诊断&#xff0c;系统性地给出优化策略和最佳实践&#xff0c;帮助读者快速定位性能瓶颈并落地改进。 &#x1f4d1; 目录 ABP vN…

高品质办公楼成都国际数字影像产业园核心业务​

成都国际数字影像产业园的核心业务&#xff0c;围绕构建专业化的数字影像文创产业生态系统展开&#xff0c;旨在打造高品质、高效率的产业发展平台。 产业集群构建与生态运营 园区核心业务聚焦于吸引和培育数字影像及相关文创领域的企业&#xff0c;形成产业集聚效应。具体包…

MindSpore框架学习项目-ResNet药物分类-构建模型

目录 2.构建模型 2.1定义模型类 2.1.1 基础块ResidualBlockBase ResidualBlockBase代码解析 2.1.2 瓶颈块ResidualBlock ResidualBlock代码解释 2.1.3 构建层 构建层代码说明 2.1.4 定义不同组合(block&#xff0c;layer_nums)的ResNet网络实现 ResNet组建类代码解析…

【Spring Boot】Spring Boot + Thymeleaf搭建mvc项目

Spring Boot Thymeleaf搭建mvc项目 1. 创建Spring Boot项目2. 配置pom.xml3. 配置Thymeleaf4. 创建Controller5. 创建Thymeleaf页面6. 创建Main启动类7. 运行项目8. 测试结果扩展&#xff1a;添加静态资源 1. 创建Spring Boot项目 打开IntelliJ IDEA → New Project → 选择M…

学习spring boot-拦截器Interceptor,过滤器Filter

目录 拦截器Interceptor 过滤器Filter 关于过滤器的前置知识可以参考&#xff1a; 过滤器在springboot项目的应用 一&#xff0c;使用WebfilterServletComponentScan 注解 1 创建过滤器类实现Filter接口 2 在启动类中添加 ServletComponentScan 注解 二&#xff0c;创建…

雷赛伺服L7-EC

1电子齿轮比&#xff1a; 电机圈脉冲1万 &#xff08;pa11的值 x 4倍频&#xff09; 2电机刚性&#xff1a; pa003 或者 0x2003 // 立即生效的 3LED显示&#xff1a; PA5.28 1 电机速度 4精度&#xff1a; PA14 //默认30&#xff0c;超过3圈er18…

阅文集团C++面试题及参考答案

能否不使用锁保证多线程安全&#xff1f; 在多线程编程中&#xff0c;锁&#xff08;如互斥锁、信号量&#xff09;是实现线程同步的传统方式&#xff0c;但并非唯一方式。不使用锁保证多线程安全的核心思路是避免共享状态、使用原子操作或采用线程本地存储。以下从几个方面详…

AVL树:保持平衡的高效二叉搜索树

目录 一、AVL树的概念 1. 二叉搜索树的局限性 2. AVL树的定义 二、AVL树节点结构 三、AVL树的插入操作 1. 插入流程 2. 代码实现片段 四、AVL树的旋转调整 1. 左单旋&#xff08;RR型&#xff09; 2. 右单旋&#xff08;LL型&#xff09; 3. 左右双旋&#xff08;LR型…

Webpack基本用法学习总结

Webpack 基本使用核心概念处理样式资源步骤&#xff1a; 处理图片资源修改图片输出文件目录 自动清空上次打包的内容EslintBabel处理HTML资源搭建开发服务器生产模式提取css文件为单独文件问题&#xff1a; Css压缩HTML压缩 小结1高级SourceMap开发模式生产模式 HMROneOfInclud…

阿里云服务器数据库故障排查指南?

阿里云服务器数据库故障排查指南? 以下是针对阿里云服务器&#xff08;如ECS自建数据库或阿里云RDS等托管数据库&#xff09;的故障排查指南&#xff0c;涵盖常见问题的定位与解决方案&#xff1a; 一、数据库连接失败 检查网络连通性 ECS自建数据库 确认安全组规则放行数据库…

数图闪耀2025深圳CCFA中国零售博览会:AI+零售数字化解决方案引发现场热潮

展会时间&#xff1a;2025年5月8日—10日 地点&#xff1a;深圳国际会展中心&#xff08;宝安新馆&#xff09; 【深圳讯】5月8日&#xff0c;亚洲规模最大的零售行业盛会——2025 CCFA中国零售博览会在深圳盛大开幕。本届展会汇聚全球25个国家和地区的900余家参展商&#xff…