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

初识Django

前言:

各位观众老爷们好,最近几个月都没怎么更新,主要是最近的事情太多了,我也在继续学习Django框架,之前还参加了一些比赛,现在我会开始持续更新Django的学习,这个过程会比较久,我会把我学习的知识都整理出来,一起分享给大家,希望大家可以多多支持一下。您的关注和支持是我更新的动力。话不多说开始我们今天的学习之旅吧:

一:创建Django项目

注意: 确保您的计算机名称和项目路径中不包含中文或空格,以避免潜在的问题。同时如果你想要使用Django的话,还需要先下载Django,可以直接在后台cmd里面下载,也可以直接在官网下载。

pip install django

有以下三种方式创建Django项目:

方法1:通过命令行创建Django项目

  1. 打开命令提示符: 导航到您希望创建项目的目录。
  2. 创建项目: 在命令行中输入以下命令来创建您的Django项目,确保项目名称不包含中文
django-admin startproject 项目名称

 启动服务器: 进入项目目录,找到manage.py文件,并运行以下命令来启动开发服务器

python manage.py runserver

方法2:在PyCharm中创建Django项目

  1. 新建项目: 在PyCharm中,选择File > New Project
  2. 选择Django: 在新建项目窗口中,选择Django作为项目类型。
  3. 注意: PyCharm可能会有一个小bug,您可能需要在settings.py文件中手动导入os模块。

方法3:创建Django应用(App)

  1. 创建应用: 应用是实现项目功能的关键,您可以通过以下命令创建一个新的应用
python manage.py startapp 应用名称

功能分离: 每个应用应该负责项目的特定功能,以实现代码的清晰和模块化

以下是直接创建Django的图片展示:

二:关于django里面的各个模块的功能:

DjangoDemo/             # 项目的根目录
|--- DjangoDemo/        # 项目名称同名的子目录,存放项目配置文件
|	|--- asgi.py       # 异步服务器网关接口,用于异步Web服务
|	|--- settings.py   # 包含项目所有配置的设置文件
|	|--- urls.py       # 定义项目的URL路由,将URL映射到视图函数
|	|--- wsgi.py       # Web服务器网关接口,用于传统Web服务器部署
|--- myapp/            # 一个或多个应用目录,存放应用级别的代码
|	|--- migrations/   # 存放由Django自动生成的数据库迁移文件
|	|--- admin.py      # 定义如何在Django admin后台管理模型
|	|--- apps.py       # 包含应用的配置,如应用的名称和可用性
|	|--- models.py     # 定义数据模型,即数据库中的表结构
|	|--- tests.py      # 包含测试用例,用于测试应用的功能
|	|--- views.py      # 包含视图函数或类,处理请求并返回响应
|--- templates/        # 存放HTML模板文件,由Django渲染成网页
|--- manage.py         # Django命令行工具,用于项目和应用管理

以下是对这些功能的详细解释:

2.1.mydjango/

这是你的项目的根目录,通常它包含了项目的子目录和文件。

2.2mydjango/

这个子目录与你的项目同名,它包含了项目的配置文件和源代码。

2.2.1asgi.py

这是一个异步服务器网关接口,用于运行项目。它允许Django项目与异步Web服务器(如Daphne或Uvicorn)进行通信,支持异步操作。

2.2.2.settings.py

这是Django项目的主配置文件。它包含了项目的全局设置,如数据库配置、应用配置、中间件配置、静态文件配置等。

而settings.py 文件是 Django 项目的配置核心,它包含了项目运行所需的所有配置信息。以下是对每个配置项的详细解释:

2.2.2.1.BASE_DIR
  • 作用:设置项目的根目录路径。Django 使用这个路径来查找项目中的其他文件和目录,如 manage.py 脚本和 asgi.pywsgi.py 等。
  • 重要性:非常重要,因为 Django 需要知道项目的根目录在哪里。
2.2.2.2.SECRET_KEY
  • 作用:一个保密的字符串,用于 Django 内部的加密机制,比如会话 cookie 的签名和密码的存储。
  • 重要性:非常重要,应该保持机密,不应该在代码库中公开。
2.2.2.3.DEBUG
  • 作用:决定 Django 是否运行在调试模式。在调试模式下,Django 会显示详细的错误页面,这对于开发和调试非常有用。
  • 重要性:非常重要,在生产环境中应该设置为 False 以关闭调试模式,避免安全风险。
2.2.2.4.ALLOWED_HOSTS
  • 作用:定义允许访问项目的主机名列表。这是为了防止 DNS 劫持攻击。
  • 重要性:在生产环境中非常重要,必须设置为允许的主机名列表。
2.2.2.5.INSTALLED_APPS
  • 作用:列出项目中激活的应用,这些应用将被 Django 加载。
  • 重要性:非常重要,因为它决定了哪些应用对项目可用。
2.2.2.6.MIDDLEWARE
  • 作用:列出项目中使用的中间件,中间件是 Django 处理请求和响应过程中的钩子。
  • 重要性:非常重要,中间件用于实现跨应用的通用功能,如会话管理、权限控制等。
2.2.2.7.ROOT_URLCONF
  • 作用:指定项目的根 URL 配置文件,通常是一个包含 urlpatterns 的模块。
  • 重要性:重要,因为它定义了 URL 到视图的映射。
2.2.2.8.TEMPLATES
  • 作用:配置模板引擎,指定 Django 如何找到和渲染模板文件。
  • 重要性:重要,因为 Django 使用模板来动态生成 HTML。
2.2.2.9.WSGI_APPLICATION
  • 作用:指定项目的 WSGI 应用,用于部署到生产服务器。
  • 重要性:重要,因为它是 Django 项目与生产服务器之间的接口。
2.2.2.10.DATABASES
  • 作用:配置数据库连接信息,包括数据库引擎、名称、用户、密码等。
  • 重要性:非常重要,因为 Django 需要知道如何连接到数据库。
2.2.2.11.AUTH_PASSWORD_VALIDATORS
  • 作用:定义密码验证规则,确保用户密码的安全性。
  • 重要性:重要,因为它帮助保护用户密码不被弱密码攻击。
2.2.2.12.LANGUAGE_CODE
  • 作用:设置项目的语言,影响 Django admin 后台和错误消息的语言。
  • 重要性:中等,对于国际化项目尤为重要。
2.2.2.13.TIME_ZONE
  • 作用:设置项目使用的时区,影响日期和时间的显示。
  • 重要性:中等,对于需要处理时区的项目尤为重要。
2.2.2.14.STATIC_URL
  • 作用:设置静态文件的 URL 前缀,用于在开发中访问静态文件,如 CSS、JavaScript 和图片。
  • 重要性:重要,因为它决定了如何在开发中访问静态文件。
2.2.2.15.DEFAULT_AUTO_FIELD
  • 作用:设置默认的自动字段类型,例如 django.db.models.AutoField,通常用于主键字段。
  • 重要性:中等,对于需要自定义字段类型的情况比较重要。

2.2.3.urls.py

在Django中,路由是URL配置的简称,它定义了URL模式(路径)和视图函数之间的映射关系。当用户访问网站时,Django会根据路由配置来决定如何处理请求并调用相应的视图函数。

2.2.3.1URL的配置:

URL配置是一个列表,Django会按照列表的顺序从上到下查找匹配的URL模式。

2.2.3.2正则匹配路由

Django提供了两种方式来定义URL模式:简单路由和正则表达式路由。

  • 简单路由:使用path()函数,它使用路由到视图的直接映射,不支持参数的提取。
  • 正则表达式路由:使用re_path()函数,它允许使用正则表达式来定义更复杂的URL模式,并可以从URL中提取参数。
2.2.3.3正则分组匹配

在正则表达式中,可以使用分组来捕获URL中的特定部分,并将其作为参数传递给视图函数。

无名分组:使用圆括号()创建,匹配的值没有名称,只是一个位置参数。

from django.urls import re_path
from django.http import HttpResponse
from myapp import viewsurlpatterns = [re_path(r'^url_text/(\w+)/$', views.url_data),  # 无名分组
]def url_data(request, data):return HttpResponse(f'这个是无名分组,接收到 url 匹配到的参数为{data}')

有名分组:使用命名分组(?P<名称>正则表达式)创建,匹配的值有一个名称,可以在视图函数中通过名称引用。

urlpatterns = [re_path(r'^url_data/(?P<number>\d+)/$', views.url_data2),  # 有名分组
]def url_data2(request, number):return HttpResponse(f'这个是有名分组,接收到 url 匹配到的参数为{number}')
2.2.3.4对应的视图函数

使用正则分组匹配路由时,视图函数必须定义接收参数,这些参数与URL中的分组相对应。

2.2.4.wsgi.py

这是项目的Web服务器网关接口文件,用于部署项目。它允许Django项目与同步Web服务器(如Gunicorn或uWSGI)进行通信。

2.3myapp/

这是Django项目中的一个应用目录,应用是Django项目的基本组成单元,用于实现特定的功能。

2.3.1migrations/

这个目录包含了由Django自动生成的数据库迁移文件。这些文件记录了模型的变更历史,用于数据库的迁移和同步。

2.3.2admin.py

这个文件用于在Django admin后台注册模型,以便在后台管理界面中管理这些模型的数据。

2.3.3.apps.py

这个文件定义了应用的配置,包括应用的名称、订单和可用性。它还可以包含应用的事件处理程序。

2.3.4models.py

这个文件定义了应用的数据模型,即数据库中的表结构。Django模型是数据库表的抽象,通常每个模型类对应数据库中的一个表。

2.3.5tests.py

这个文件包含了应用的测试用例。Django使用unittest框架来组织测试,你可以在这里编写测试来验证应用的功能。

2.3.6.views.py

这个文件包含了应用的视图逻辑。视图是Django处理请求和返回响应的函数或类。

2.4.templates/

这个目录用于存放HTML模板文件。Django使用模板系统来动态生成HTML内容。模板文件包含了HTML标记和Django模板语言,用于插入动态数据。

2.5.manage.py

这是一个命令行工具,用于管理Django项目。通过这个工具,你可以执行多种管理任务,如启动开发服务器、数据库迁移、创建新的应用、收集静态文件等。

三.Django的简单应用:

3.1注册应用:

在Django项目中,每个应用都需要在项目的settings.py文件中的INSTALLED_APPS列表里注册,这样Django才能识别并加载它们。

写法一:推荐使用应用的配置类。这种方式更加灵活,可以在apps.py文件中定义应用的配置,包括应用的名字、订单等。

# 在 settings.py 文件中
INSTALLED_APPS = [...'myapp.apps.MyappConfig',  # 应用名称.apps.应用名称Config
]

其中myapp是应用的目录名,MyappConfigapps.py中定义的配置类。

写法二:直接注册应用的目录名。这种方式简单,但在大型项目中可能会导致配置管理不够灵活。

# 在 settings.py 文件中
INSTALLED_APPS = [...'myapp',  # 应用名称
]

3.2.实现视图

视图是Django中处理用户请求和返回响应的函数或类。视图函数通常定义在应用的views.py文件中。

  • 简单文本响应

from django.http import HttpResponsedef index(request):return HttpResponse('大家好,')

 这里定义了一个视图函数index,它接收一个请求对象request作为参数,并返回一个HttpResponse对象。

3.3.路由配置

from django.urls import path
from myapp import viewsurlpatterns = [path('index/', views.index),
]

urls.py文件中,使用path函数将URL路径映射到对应的视图函数。

3.4.响应HTML文件

from django.shortcuts import renderdef html_info(request):return render(request, 'info.html')def html_info1(request):data = {'name':'林谋','age':20,'address':'中国'}return render(request, 'info2.html', data)def html_info2(request):# 使用 locals() 将当前视图函数的局部变量传递给模板return render(request, 'info2.html', locals())

3.5路由配置(响应HTML)

urlpatterns = [path('info1/' , views.html_info),path('info2/' , views.html_info1),path('info3/' , views.html_info2),
]

3.6重定向

from django.shortcuts import redirectdef baidu(request):return redirect('https://www.baidu.com')def my(request):return redirect('/info2/')def myview(request):return redirect(views.html_info2)

使用redirect函数可以将用户重定向到另一个URL或视图。

3.7路由配置(重定向)

urlpatterns = [path('bd/' , views.baidu),path('my/' , views.my),path('my2/' , views.myview),
]

结语:

今天的分享就先到这里了,由于时间和篇幅的原因,我们先学到Django的这些内容,后面的内容我们可以以后慢慢学,记得关注和点赞,我会坚持更新的,由于作者的水平有限,里面的内容难免会有疏漏,也非常欢迎大家能够指出我的问题,我也很乐意和大家一起讨论交流,希望和大家一起进步,谢谢大家

相关文章:

初识Django

前言: 各位观众老爷们好&#xff0c;最近几个月都没怎么更新&#xff0c;主要是最近的事情太多了&#xff0c;我也在继续学习Django框架&#xff0c;之前还参加了一些比赛&#xff0c;现在我会开始持续更新Django的学习&#xff0c;这个过程会比较久&#xff0c;我会把我学习的…...

VirtualBox虚拟机连接宿主机并能够上网(小白向)

现存问题 windows系统主要使用vmare和virtualbox两种虚拟机&#xff0c;virtualbox相对于vmare更加轻便&#xff0c;但少有博客能够详细说明使用virtualbox的教程。踩了网上的坑后&#xff0c;决定写一篇文章介绍virtualbox虚拟机上网的流程。 需求 1. virtualbox虚拟机与宿主机…...

深度学习每周学习总结J1(ResNet-50算法实战与解析 - 鸟类识别)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 目录 0. 总结1. 设置GPU2. 导入数据及处理部分3. 划分数据集4. 模型构建部分5. 设置超参数&#xff1a;定义损失函数&#xff0c;学习率&a…...

商家营销工具架构升级总结

今年以来&#xff0c;商家营销工具业务需求井喷&#xff0c;需求数量多且耗时都比较长&#xff0c;技术侧面临很大的压力。因此这篇文章主要讨论营销工具前端要如何应对这样大规模的业务需求。 问题拆解 我们核心面对的问题主要如下&#xff1a; 1. 人力有限 我们除了要支撑存量…...

移动硬盘无法读取:问题解析与高效数据恢复实战

一、移动硬盘无法读取的困扰 在数字化时代&#xff0c;移动硬盘作为数据存储和传输的重要媒介&#xff0c;承载着大量珍贵的数据资源。然而&#xff0c;当移动硬盘突然无法读取时&#xff0c;我们往往会陷入深深的困扰之中。这种无法读取的现象可能表现为插入电脑后毫无反应、…...

20241005给荣品RD-RK3588-AHD开发板刷Rockchip原厂的Android12时使用iperf3测网速

20241005给荣品RD-RK3588-AHD开发板刷Rockchip原厂的Android12时使用iperf3测网速 2024/10/5 14:06 对于荣品RD-RK3588-AHD开发板&#xff0c;eth1位置上的PCIE转RJ458的以太网卡是默认好用的&#xff01; PCIE TO RJ45&#xff1a;RTL8111HS 被识别成为eth0了。inet addr:192.…...

node配置swagger

安装swagger npm install swagger-jsdoc swagger-ui-express 创建 swagger.js 配置文件 ​ const path require(path); const express require(express); const swaggerUI require(swagger-ui-express); const swaggerJsDoc require(swagger-jsdoc); // 修改 swaggerDoc…...

MATLAB plot画线的颜色 形状

文章目录 前言一、MATLAB plot画线的颜色 形状&#xff1f;颜色选项标记选项示例代码详细说明 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 项目需要&#xff1a; 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、MA…...

Goland使用SSH远程Linux进行断点调试 (兼容私有库)

① 前置需求 ssh远程的 Linux 服务器必须安装 高于本地的 Go推荐golang 安装方式使用 apt yum snap 等系统自管理方式&#xff0c;&#xff08;要安装最新版本的可以找找第三方源&#xff09;&#xff0c;如无特殊需求不要自行编译安装golang ② Goland设置 2.1、设置项处理…...

LLM | Ollama WebUI 安装使用(pip 版)

Open WebUI (Formerly Ollama WebUI) 也可以通过 docker 来安装使用 1. 详细步骤 1.1 安装 Open WebUI # 官方建议使用 python3.11&#xff08;2024.09.27&#xff09;&#xff0c;conda 的使用参考其他文章 conda create -n open-webui python3.11 conda activate open-web…...

Three.js基础内容(一)

目录 一、几何体顶点和模型 1.1、点模型对象(Points)渲染顶点数据 1.2、线模型(Line)渲染顶点数据&#xff08;画个心&#xff09; 1.3、网格模型(Mesh)渲染顶点数据(三角形概念) 1.4、构建一个矩形平面几何体 1.5、几何顶点索引数据 1.6、顶点法线数据 1.7、查看three…...

网站建设制作需要注意

网站建设制作不仅仅是简单的技术活&#xff0c;更是一个企业或个人在互联网上展示自己形象和实力的重要手段。本文将探讨网站建设制作的重要性、步骤和关键要素。 1. 网站建设的重要性 1.1 品牌形象与宣传 一个精心设计的网站能够突显企业或个人的品牌形象&#xff0c;传递清晰…...

【Python】Uvicorn:Python 异步 ASGI 服务器详解

Uvicorn 是一个为 Python 设计的 ASGI&#xff08;异步服务器网关接口&#xff09;Web 服务器。它填补了 Python 在异步框架中缺乏一个最小化低层次服务器/应用接口的空白。Uvicorn 支持 HTTP/1.1 和 WebSockets&#xff0c;是构建现代异步Web应用的强大工具。 ⭕️宇宙起点 &a…...

类型转换【C++提升】(隐式转换、显式转换、自定义转换、转换构造函数、转换运算符重载......你想知道的全都有)

更多精彩内容..... &#x1f389;❤️播主の主页✨&#x1f618; Stark、-CSDN博客 本文所在专栏&#xff1a; C系列语法知识_Stark、的博客-CSDN博客 座右铭&#xff1a;梦想是一盏明灯&#xff0c;照亮我们前行的路&#xff0c;无论风雨多大&#xff0c;我们都要坚持不懈。 一…...

微信小程序hbuilderx+uniapp+Android 新农村综合风貌旅游展示平台

目录 项目介绍支持以下技术栈&#xff1a;具体实现截图HBuilderXuniappmysql数据库与主流编程语言java类核心代码部分展示登录的业务流程的顺序是&#xff1a;数据库设计性能分析操作可行性技术可行性系统安全性数据完整性软件测试详细视频演示源码获取方式 项目介绍 小程序端…...

【AI大模型】使用Embedding API

一、使用OpenAI API 目前GPT embedding mode有三种&#xff0c;性能如下所示&#xff1a; 模型每美元页数MTEB得分MIRACL得分text-embedding-3-large9,61554.964.6text-embedding-3-small62,50062.344.0text-embedding-ada-00212,50061.031.4 MTEB得分为embedding model分类…...

面试速通宝典——11

188. 总结static的应用和作用 函数体内static变量的作用范围为该函数体&#xff0c;不同于auto变量&#xff0c;该变量的内存只被分配一次&#xff0c;因此其值在下次调用时仍维持上次的值。在模块内的static全局变量可以被模块内所用函数访问&#xff0c;但不能被模块外其他函…...

python:reportlab 将多个图片合并成一个PDF文件

承上一篇&#xff1a;java&#xff1a;pdfbox 3.0 去除扫描版PDF中文本水印 # 导出扫描版PDF文件中每页的图片文件 java -jar pdfbox-app-3.0.3.jar export:images -prefixtest -i your_book.pdf 导出 Writing image: test-1.jpg Writing image: test-2.jpg Writing image: t…...

决策树:机器学习中的强大工具

什么是决策树&#xff1f; 决策树是一种通过树状结构进行决策的模型。它的每个节点代表一个特征&#xff08;或属性&#xff09;&#xff0c;每个分支代表特征的可能值&#xff0c;而每个叶子节点则代表最终的决策结果或分类。想象一下&#xff0c;在选择晚餐时&#xff0c;你…...

平面电磁波(解麦克斯韦方程)电场相位是复数的积分常数,电场矢量每个分量都有一个相位。磁场相位和电场一样,这是因为无损介质中实数的波阻抗

注意无源代表你立方程那个点xyzt处没有源&#xff0c;电场磁场也是这个点的。 j电流面密度&#xff0c;电流除以单位面积&#xff0c;ρ电荷体密度&#xff0c;电荷除以单位体积。 j方程组有16个未知数&#xff0c;每个矢量有三个xyz分量&#xff0c;即三个未知数&#xff0c;…...

复习HTML(进阶)

前言 上一篇的最后我介绍了在表单中&#xff0c;上传文件需要使用到 method属性 和enctype属性。本篇博客主要是详细的介绍这些知识 <form action"http://localhost:8080/test" method"post" enctype"multipart/form-data"> method属性…...

Qt 每日面试题 -7

61、如何安全的在另外一个线程中调用QObject对象的接口 QObject被设计成在一个单线程中创建与使用&#xff0c;因此&#xff0c;在一个线程中创建一个对象&#xff0c;而在另外的线程中调用它的函数&#xff0c;这样的行为不能保证工作良好。使用信号槽的队列连接或者QT的反射…...

《计算机原理与系统结构》学习系列——计算机的算数运算(下)

系列文章目录 目录 浮点数的表示和运算浮点数的表示浮点数的规格化浮点数标准IEEE754浮点数表示范围浮点数的转换浮点数的运算浮点数加法浮点数加法的硬件实现 精度浮点乘法浮点运算硬件 MIPS中的浮点指令 浮点数的表示和运算 浮点数的表示 表达非整型的数 可以表达很小和很大…...

二叉树进阶学习——从前序和中序遍历序列构造二叉树

1.题目解析 题目来源&#xff1a;105.从前序与中序遍历序列构造二叉树——力扣 测试用例 2.算法原理 首先要了解一个概念 前序遍历&#xff1a;按照 根节点->左子树->右子树的顺序遍历二叉树 中序遍历&#xff1a;按照 左子树->根节点->右子树的顺序遍历二叉树 题目…...

【数据分享】2000—2023年我国省市县三级逐年植被覆盖度(FVC)数据(Shp/Excel格式)

之前我们分享过2000—2023年逐月植被覆盖度&#xff08;FVC&#xff09;栅格数据&#xff08;可查看之前的文章获悉详情&#xff09;和Excel和Shp格式的省市县三级逐月FVC数据&#xff08;可查看之前的文章获悉详情&#xff09;&#xff0c;原始的逐月栅格数据来源于高吉喜学者…...

【Python】Streamlit:为数据科学与机器学习打造的简易应用框架

Streamlit 是一个开源的 Python 库&#xff0c;专为数据科学家和机器学习开发者设计&#xff0c;旨在快速构建数据应用。通过简单的 Python 脚本&#xff0c;开发者无需掌握前端技术&#xff0c;即可将数据分析和模型结果转化为直观、交互式的 Web 应用。其简洁的 API 设计使得…...

OpenJudge | 置换选择排序

总时间限制: 1000ms 内存限制: 65536kB 描述 给定初始整数顺串&#xff0c;以及大小固定并且初始元素已知的二叉最小堆&#xff08;为完全二叉树或类似完全二叉树&#xff0c;且父元素键值总小于等于任何一个子结点的键值&#xff09;&#xff0c;要求利用堆实现置换选择排序&a…...

如何提取b站的视频字幕,下载视频

打开视频地址 按F12打开—开发者工具 在开发者工具打开Network 过滤器关键字&#xff1a; 自动生成字幕&#xff1a;ai_subtitle 自制&#xff1a;json 打开/关闭字幕 刷新页面 找到字幕 点选字幕的respond 将方框中的内容复制&#xff1b; 复制到&#xff1a;https://www.drea…...

Vue中使用ECharts实现热力图的详细教程

在数据可视化领域&#xff0c;热力图是一种非常直观的表现形式&#xff0c;它通过颜色深浅来展示数据分布情况。在Vue项目中&#xff0c;我们可以使用ECharts这一强大的图表库来实现热力图。下面我将详细介绍如何在Vue中使用ECharts实现热力图。效果如下图&#xff1a; 一、准备…...

Arduino UNO R3自学笔记13 之 Arduino使用LM35如何测量温度?

注意&#xff1a;学习和写作过程中&#xff0c;部分资料搜集于互联网&#xff0c;如有侵权请联系删除。 前言&#xff1a;学习使用传感器测温。 1.LM35介绍 一般来讲当知道需求&#xff0c;就可以 通过既定要求的条件来筛选需要的器件&#xff0c;多方面的因素最终选定了器件…...