初识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的这些内容,后面的内容我们可以以后慢慢学,记得关注和点赞,我会坚持更新的,由于作者的水平有限,里面的内容难免会有疏漏,也非常欢迎大家能够指出我的问题,我也很乐意和大家一起讨论交流,希望和大家一起进步,谢谢大家

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

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

相关文章

MySQL--三大范式(超详解)

目录 一、前言二、三大范式2.1概念2.2第一范式&#xff08;1NF&#xff09;2.3第二范式&#xff08;2NF&#xff09;2.3第三范式&#xff08;3NF&#xff09; 一、前言 欢迎大家来到权权的博客~欢迎大家对我的博客进行指导&#xff0c;有什么不对的地方&#xff0c;我会及时改进…

嘴尚绝卤味:健康美味的双重奏

在当今快节奏的生活中&#xff0c;人们对美食的追求不再仅仅停留于味蕾的满足&#xff0c;更加注重食物的健康与营养。在这一背景下&#xff0c;"嘴尚绝卤味"以其独特的健康理念与精湛的制作工艺&#xff0c;成为了市场上备受瞩目的卤味品牌。本文将从"嘴尚绝卤…

Kotlin基本知识

Kotlin是一种现代的静态类型编程语言&#xff0c;由JetBrains公司在2010年推出&#xff0c;并被Google在2019年宣布为Android开发的首选语言。 超过 50% 的专业 Android 开发者使用 Kotlin 作为主要语言&#xff0c;而只有 30% 使用 Java 作为主要语言。 70% 以 Kotlin 为主要语…

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《考虑光伏不确定性的配电网谐波监测优化配置方法 》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

Azure DevOps Server:不能指派新增的用户

Contents 1. 概述2. 解决方案 1. 概述 近期和微软Azure DevOps项目组解决了一个“无法指派开发人员”的问题&#xff0c;在此分享给大家。问题描述&#xff1a; 在一个数据量比较大的Azure DevOps Server的部署环境中&#xff0c;用户发现将新用户的AD域账户添加到Azure DevOps…

《15分钟轻松学 Python》教程目录

为什么要写这个教程呢&#xff0c;主要是因为即使是AI技术突起的时代&#xff0c;想要用好AI做开发&#xff0c;那肯定离不开Python&#xff0c;就算最轻量级的智能体都有代码块要写&#xff0c;所以不一定要掌握完完整整的Python&#xff0c;只要掌握基础就能应对大部分场景。…

数据看板如何提升决策效率?

数据看板作为一种直观、高效的数据可视化工具&#xff0c;在这一过程中发挥着至关重要的作用。以一家中型制造企业为例&#xff0c;每天面临着生产计划的安排、原材料的采购、产品质量的把控以及市场销售的策略制定等诸多业务场景。在生产线上&#xff0c;需要确保设备的高效运…

【隐私计算篇】多方安全计算之函数秘密共享(FSS)

1. 函数秘密共享(FSS)定义 秘密共享是一种将一个值拆分为多个份额的方法&#xff0c;形式有多种&#xff0c;可以参考《安全多方计算(MPC)矩阵乘法算子的原理分析》。这里主要提及加法秘密共享&#xff0c;使得&#xff1a;这些份额可以重新组合以还原出秘密值&#xff1b;任…

【HTML并不简单】笔记1-常用rel总结:nofollow、noopener、opener、noreferrer,relList

文章目录 rel"nofollow"rel"noopener"与rel"opener"rel"noreferrer"relList对象 《HTML并不简单&#xff1a;Web前端开发精进秘籍》张鑫旭&#xff0c;一些摘要&#xff1a; HTML&#xff0c;这门语言的知识体系非常庞杂&#xff0c;涉…

Python数据结构与算法问题详解

Python数据结构与算法问题详解 Python 作为一种高级编程语言&#xff0c;凭借其简洁的语法和强大的内置库&#xff0c;成为了数据结构与算法学习的绝佳工具。本文将深入解析几种常见的数据结构&#xff0c;并结合具体的算法&#xff0c;展示如何在实际问题中高效解决问题。通过…

《PMI-PBA认证与商业分析实战精析》第7章 解决方案评价

第7章 解决方案评价 本章主要内容&#xff1a; 评价的建议思维 解决方案的评价计划 确定评价什么 何时以及如何验证解决方案的结果 评价验收标准和解决缺陷 促进通过/不通过的决策 获得解决方案的签字确认 评价解决方案的长期绩效 解决方案替换/淘汰 本章涵盖的考试…

ASP.NET Core 创建使用异步队列

示例图 在 ASP.NET Core 应用程序中&#xff0c;执行耗时任务而不阻塞线程的一种有效方法是使用异步队列。在本文中&#xff0c;我们将探讨如何使用 .NET Core 和 C# 创建队列结构以及如何使用此队列异步执行操作。 步骤 1&#xff1a;创建 EmailMessage 类 首先&#xff0c…

1、Spring Boot 3.x 集成 Eureka Server/Client

一、前言 基于 Spring Boot 3.x 版本开发&#xff0c;因为 Spring Boot 3.x 暂时没有正式发布&#xff0c;所以很少有 Spring Boot 3.x 开发的项目&#xff0c;自己也很想了踩踩坑&#xff0c;看看 Spring Boot 3.x 与 2.x 有什么区别。自己与记录一下在 Spring Boot 3.x 过程…

Linux下的IO模型

阻塞与非阻塞IO&#xff08;Input/Output&#xff09; 阻塞与非阻塞IO&#xff08;Input/Output&#xff09;是计算机操作系统中两种不同的文件或网络通信方式。它们的主要区别在于程序在等待IO操作完成时的行为。 阻塞IO&#xff08;Blocking IO&#xff09; 在阻塞IO模式下…

详细介绍:API 和 SPI 的区别

文章目录 Java SPI (Service Provider Interface) 和 API (Application Programming Interface) 的区别详解目录1. 定义和目的1.1 API (Application Programming Interface)1.2 SPI (Service Provider Interface) 2. 使用场景2.1 API 的应用场景2.2 SPI 的应用场景 3. 加载和调…

PyGWalker:让你的Pandas数据可视化更简单,快速创建数据可视化网站

1、PyGWalker应用: 在数据分析的过程中,数据的探索和可视化是至关重要的环节,如何高效地将分析结果展示给团队、客户,甚至是公众,是很多数据分析师和开发者面临的挑战,接下来介绍的两大工具组合——PyGWalker与Streamlit,可以帮助用户轻松解决这个问题,即使没有复杂的代…

调用智谱AI,面试小助手Flask简单示例

文章目录 1.接入AI获取API密钥Python代码 2.小助手的实现流程3.Flask应用示例Python文件.pyindex.html运行Flask应用地址栏输入 http://localhost:5000/ 1.接入AI 获取API密钥 在智谱AI的官方网站上注册&#xff0c;右上角点击API密钥&#xff0c;新建并复制一个 API Key&…

AI不可尽信

看到某项目有类似这样的一段代码 leaves : make([]int, 10) leaves leaves[:0]没理解这样的连续两行,有何作用? 初始化一个长度和容量都为10的切片,接着把切片长度设置为0 即如下demo: (在线地址) package mainimport "fmt"func main() {leaves : make([]int, 1…

MongoDB-aggregate流式计算:带条件的关联查询使用案例分析

在数据库的查询中&#xff0c;是一定会遇到表关联查询的。当两张大表关联时&#xff0c;时常会遇到性能和资源问题。这篇文章就是用一个例子来分享MongoDB带条件的关联查询发挥的作用。 假设工作环境中有两张MongoDB集合&#xff1a;SC_DATA&#xff08;学生基本信息集合&…

Flask-2

文章目录 请求全局钩子[hook]异常抛出和捕获异常abort 主动抛出HTTP异常errorhandler 捕获错误 context请求上下文(request context)应用上下文(application context)current_appg变量 两者区别&#xff1a; 终端脚本命令flask1.0的终端命令使用自定义终端命令 flask2.0的终端命…