【一】Django框架版本介绍

【一】Django框架版本介绍

【一】Django框架版本
● Django 是一个高级的Python Web框架,由荷兰人Armin Ronacher创建。
● 随着版本的迭代和功能的不断优化,Django在处理异步请求方面也有了显著的进步。
【1】Django1.x
● 默认不支持异步
● Django 1.x主要集中在传统的Web开发上,其设计思想倾向于同步HTTP请求处理。
● 默认情况下,并未内置对异步编程的支持,开发者若要在Django 1.x中实现异步处理,通常需要借助第三方库如django-celery或django-tornado等来结合其他异步框架(如Celery、Tornado等)来实现后台任务的异步执行。
【2】Django2.x
● 默认不支持异步
● 在Django 2.x版本中,虽然核心框架并未直接提供对异步HTTP请求的支持,但已经开始引入一些异步相关的新特性和API,比如asgi (Asynchronous Server Gateway Interface) 标准的初步支持。
● 开发者可以通过安装第三方ASGI服务器(如daphne或uvicorn),配合channels库使用,来实现Websockets和消息队列等场景下的部分异步功能。
【3】Django3.x
● 自带异步功能
● Django 3.x标志着其正式对异步编程的支持,它引入了channels框架作为标准库的一部分,实现了全栈的WebSocket支持以及与asyncio的集成,使得开发者可以直接在视图层、消费者层以及中间件层面编写异步代码,提供了ASGI和HTTP/2协议的底层支持。
● 此外,django-redis、django-socketio等第三方库也进一步丰富了异步应用的构建能力。
【4】Django4.x
● 在Django 4.x版本之后,异步功能得到了持续加强和完善。
● 例如,在4.0中,channels框架进行了重大重构,使其更加轻量级和模块化,同时引入了websockets库作为默认WebSocket支持,大大简化了开发者配置和使用的复杂度。
● 此外,对于长期支持计划(LTS)版本,Django会确保异步相关的API和工具在后续更新中得到稳定且兼容的维护和支持,以满足现代Web应用对高性能、低延迟的需求。
# 我们学习 3.2.12 版本 --- # 带你们用 4.x 版本 --- 操作和 3.2.12 版本 是一致 如果有老项目 3.2.12 

【二】Django框架安装

【1】前提

  • 你要知道你自己的系统解释器版本和系统解释器版本的位置

【2】安装

pip install django # 默认按照最新版本安装# 我们要学习 3.2.12 
pip install django==3.2.12pip install django==
# 会打印当前Django的所有版本 一直到 最新版

【3】注意事项

● 计算机名称不要出现中文
● python解释器版本不同可能会出现启动报错
● 项目中所有的文件名称不要出现中文
● 多个项目文件尽量不要嵌套,做到一项一夹

在这里插入图片描述

  • 启动如果报错,根据提示找到修改widgets.py文件第152行源码,删除最后的逗号即可

【三】Django框架基础使用

【1】检查当前Django版本

# 3.2.12 会知道版本
dream@DreamdeMacBook-Pro day54_Django % pip install django==3.2.12
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Requirement already satisfied: django==3.2.12 in /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages (3.2.12)
Requirement already satisfied: asgiref<4,>=3.3.2 in /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages (from django==3.2.12) (3.7.2)
Requirement already satisfied: pytz in /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages (from django==3.2.12) (2023.3.post1)
Requirement already satisfied: sqlparse>=0.2.2 in /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages (from django==3.2.12) (0.4.4)
Requirement already satisfied: typing-extensions>=4 in /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages (from asgiref<4,>=3.3.2->django==3.2.12) (4.9.0)

【2】安装之后会出现一个文件夹

在这里插入图片描述

【3】查看Django命令

django-admin
django-adminType 'django-admin help <subcommand>' for help on a specific subcommand.Available subcommands:[django]checkcompilemessagescreatecachetabledbshelldiffsettingsdumpdataflushinspectdbloaddatamakemessagesmakemigrationsmigraterunserversendtestemailshellshowmigrationssqlflushsqlmigratesqlsequenceresetsquashmigrationsstartappstartprojecttesttestserver
Note that only Django core commands are listed as settings are not properly configured (error: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.).

【四】创建项目

django-admin startproject 项目名django-admin startproject demo01
  • 执行上述命令就会在当前路径下出现一个文件夹叫 demo01

【2】PyCharm创建项目

在这里插入图片描述

在这里插入图片描述

【五】启动项目

【1】Django命令行启动

cd demo01
demo01          manage.py
  • 启动项目
python310 manage.py runserver [IP:PORT]# 不写 [IP:PORT] 默认就是 127.0.0.1:8000
dream@DreamdeMacBook-Pro demo01 % python310 manage.py runserver 
Watching for file changes with StatReloader
Performing system checks...System check identified no issues (0 silenced).You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
September 27, 2024 - 03:44:26
Django version 3.2.12, using settings 'demo01.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C. # 如果 你想结束项目退出 CONTROL-C

【2】PyCharm启动

  • 打开项目 是两层
demo01 # 外边一层项目名
├── db.sqlite3
├── demo01 # 里边一层和项目名同名的文件夹
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── __init__.cpython-310.pyc
│   │   ├── settings.cpython-310.pyc
│   │   ├── urls.cpython-310.pyc
│   │   └── wsgi.cpython-310.pyc
│   ├── asgi.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── manage.py

在这里插入图片描述

  • 修改端口

在这里插入图片描述

在这里插入图片描述

  • 再启动项目的时候可能会遇到一个问题

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 配置文件不想改 想使用默认的 添加新配置启动

在这里插入图片描述

【六】创建APP

【1】APP概念介绍

● 在Django框架中,应用程序(Application)是组织和管理项目代码的基本单元。
● 它不仅包含了与特定业务逻辑相关的模型、视图、模板以及URL配置,还可能包括 forms、signals、中间件、管理后台等组件,实现了项目的模块化设计。
【1】介绍
● Django框架就像是一个高度模块化的操作系统,为开发者提供了基础设施和服务,如数据库连接、认证授权、请求处理等。
【2】比喻
(1)大学与学院
● Django框架相当于是一所大学,应用相当于是大学里面的各个学院 ○ 大学相当于是个空壳子 ■ 负责提供环境○ 学院才是一个个真正具备特定功能的集合
(2)操作系统与服务
● 每个应用就像是操作系统中的一个进程或服务,负责处理特定领域的任务和数据操作。
● 用户应用(user)关注用户的注册、登录、权限管理等功能;
● 订单应用(order)主要处理商品购买、订单状态跟踪、支付确认等相关事务;
● 商品应用(goods)专注于商品信息管理、分类展示、搜索推荐等功能;
● 后台管理应用(backend)则通常包含对系统设置、数据统计、权限控制等方面的集中管理和维护。
【2】示例
● 使用django写一个淘宝,淘宝里面有很多功能模块
● 我们应该先创建一个空的django项目然后根据功能的不同创建不同的应用
● django项目
应用名	业务
user	用户相关业务:管理用户账户信息(账号、密码、角色、权限)、用户行为记录、消息通知等
order	订单相关业务:负责订单生成、订单详情展示、订单状态变更、支付接口调用、物流追踪及订单评价等
goods	产品相关业务:包括商品分类管理、商品详情展示、库存管理、商品评论、浏览记录等
promotion	促销相关业务:针对促销活动的规划、优惠券发放、满减规则设置、折扣计算等;
category	商品类别业务:用于商品类别树的构建、导航菜单设置、新品上架、热门推荐等;
logistics	物流相关业务:对接物流公司API以获取物流信息、快递单号追踪等功能;
statistics	数据分析相关业务:收集并分析平台各项运营数据,如访问量、转化率、客单价等,为决策提供支持;

【2】创建APP

  • 前提是当前文件夹路径下有 manage.py
python manage.py startapp APP名字
python manage.py startapp user
  • 效果就是在当前项目路径下出现了一个 user文件夹

【3】注册APP

  • settings.py 中有一个代码快
INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles',# 直接放自己创建的app名字即可"user"
]

【4】PyCharm创建APP

在这里插入图片描述

startapp app名字

在这里插入图片描述

INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles',# 方式一 直接写 app 名字"user",# 方式二 : 写具体的路径"shop.apps.ShopConfig"
]

【七】Django项目文件介绍

DjangoProject54 # 主项目名 必须
├── DjangoProject54 # 存放Django项目的基本配置的文件夹 和你的项目名是同名的 必须
│   ├── __init__.py # 初始化项目需要加载的代码 后面会写
│   ├── __pycache__ # Python解释器给Django项目的缓存文件  --- 在项目中看不到 不用管
│   │   ├── __init__.cpython-310.pyc # Python解释器缓存文件
│   │   └── settings.cpython-310.pyc # settings 更改后的缓存
│   ├── asgi.py # 上线到服务器之后都需要配置的启动文件 本地的项目不写 不动
│   ├── settings.py # Django的项目配置文件
│   ├── urls.py # 跟路由映射文件
│   └── wsgi.py # 基于 wsgiref 模块分装后的 wsgi 模块 去帮助你 创建 app 不动
├── manage.py # 加载Django项目的所有配置 并帮助我们启动Django项目
├── templates
└── user # 自己创建的 APP 的名字├── __init__.py # 没有东西 后面会写 ├── admin.py # 我们在进入后台管系统之后注册内容 现在不写 后面 写├── apps.py # 当前APP 的默认配置 不要瞎改  不要动├── migrations # 数据库迁移记录文件夹 MySQL 将 Python代码定义的数据库结构转换成SQL 语句│   └── __init__.py # 没东西但是不允许删除 必须有├── models.py # 存储我们自己定义的数据库模型 自己通过 Python代码定义的数据库字段├── tests.py # Django的测试文件 不用管└── views.py # 自己写的业务逻辑在的地方

【八】小白必会三板斧

from django.shortcuts import render,HttpResponse,redirect
from django.shortcuts import render, HttpResponse, redirect# Create your views here.
# 定义视图函数并且有一个 request 参数必写
def index(request):# 返回纯文本内容return HttpResponse("OK")def login(request):# 返回 页面 对象return render(request, "login.html")def register(request):print("欢迎来到注册函数")# 重定向路由# http://127.0.0.1:8000/register/# 自动帮你转接到 http://127.0.0.1:8000/login/return redirect("/login/")'''[27/Sep/2024 04:22:31] "GET /register/ HTTP/1.1" 302 0[27/Sep/2024 04:22:31] "GET /login/ HTTP/1.1" 200 145'''

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

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

相关文章

git 大文件上传不了的 问题

你 还是在 cmd 里执行&#xff0c;Select-String 是 PowerShell 的命令&#xff0c;cmd 不认识。 请务必按下面的步骤 切换到 PowerShell 再运行。✅ 1. 打开 PowerShell&#xff08;不要再用 cmd&#xff09;最简单&#xff1a; 在资源管理器里进入 D:\linShiWenjian\my-react…

【FIX】go运行报错“missing go.sum entry for module providing package”解决方案

&#x1f527; ​核心解决方案​**运行 go mod tidy**​ ​作用​&#xff1a;自动同步 go.mod和 go.sum文件&#xff0c;添加缺失依赖并移除无用条目。 go mod tidy​适用场景​&#xff1a;90% 的校验和缺失问题可通过此命令解决。 ​注意​&#xff1a;若项目含私有仓库&…

【实操教学】ArcGIS 如何进行定义坐标系

一、坐标系定义的方式创建数据时可直接完成坐标系定义&#xff1b;针对已创建的数据集&#xff08;涵盖要素类、要素数据集及栅格数据集&#xff09;&#xff0c;则可通过以下这种方式定义&#xff1a;工具箱工具调用&#xff1a;使用 ArcGIS 工具箱中的 “定义投影&#xff08…

如何使用Windows自带的PnPUtil命令来禁用/停用和启用硬件设备

我来详细讲解一下如何使用 Windows 自带的 PnPUtil 命令来禁用&#xff08;停用&#xff09; 和启用硬件设备。 PnPUtil (即插即用实用工具) 是一个功能强大的命令行工具&#xff0c;主要用于安装、卸载、枚举和修改驱动程序包。对于硬件的启用和禁用&#xff0c;它通过操作设…

鸿蒙Next媒体展示组件实战:Video与动态布局全解析

今天我们来深入探讨HarmonyOS Next中几种核心媒体展示组件的使用方法&#xff0c;通过实际代码示例展示如何打造丰富的多媒体体验。HarmonyOS Next为开发者提供了一套强大而灵活的媒体展示组件&#xff0c;使开发者能够轻松实现视频播放、动态布局适应、全屏切换等常见多媒体功…

复现RoboDK机器人校准功能(以Staubli TX2‑90L / TX200机械臂为测试对象,实测精度接近原厂)

本算法复现了 RoboDK 的机器人校准功能&#xff1a;在训练集的理论校准后精度与 RoboDK 一致&#xff0c;在测试集的实测精度接近 Staubli 原厂。 参考&#xff1a;RoboDK 机器人校准功能&#xff08;https://robodk.com.cn/cn/robot-calibration&#xff09; 特性 支持 SDH 参…

Vue常用指令和生命周期

Vue 是基于 MVVM模型的前端 JavaScript 框架。Vue 核心是数据驱动视图&#xff0c;通过响应式数据实现视图自动更新。<template><div>{{ message }}</div><button click"changeMsg">修改内容</button> </template><script se…

深度学习周报(8.25~8.31)

目录 摘要 Abstract 1 RNN学习意义 2 RNN基础知识 2.1 核心思想 2.2 传播 2.3 优缺点 2.4 变体结构与应用场景 3 RNN结构代码示例 4 总结 摘要 本周主要学习了循环神经网络的学习意义与基础知识&#xff0c;重点了解了RNN循环连接的核心思想、前向传播与反向传播过程…

借助 LAMBDA 公式,实现单元格区域高效转换

新特性介绍 “转换单元格&#xff08;Transform&#xff09;” 功能允许用户将自定义的单参数 LAMBDA 公式应用于选中的单元格区域。用户可选择公式参数的作用域 —— 按单元格、按行、按列或按整个区域。 转换完成后&#xff0c;源单元格区域会被清空&#xff0c;转换后的区…

LeetCode 01背包 494. 目标和

494. 目标和给你一个非负整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 ‘’ 或 ‘-’ &#xff0c;然后串联起所有整数&#xff0c;可以构造一个 表达式 &#xff1a; 例如&#xff0c;nums [2, 1] &#xff0c;可以在 2 之前添加 ‘’ &#xff0c;在 1 之前…

Dify 1.8.0 全网首发,预告发布

距离Dify 1.7.2过去两周了 Dify 1.8.0 又跟大伙见面了&#xff01; 1.8.0&#xff0c;属于主版本号不变、但第二位数字更新的“阶段性大更”&#xff0c;意味着功能上的显著优化和体验上的重要升级。 根据官方的Github日志&#xff0c;这一版本将继续聚焦三大核心方向&#x…

基于LangChain框架搭建AI问答系统(附源码)

AI问答系统1. 背景知识2. 问答系统流程3. 知识问答系统相关组件3.1 文档加载器3.2 文档切割器3.3 嵌入模型包装器3.4 向量存储库3.5 模型包装器3.6 链组件4. 问答系统演示4.1 问答程序4.2 演示大模型回答效果5.问答系统代码1. 背景知识 在人工智能技术飞速发展的今天&#xff…

【Python】QT(PySide2、PyQt5):Qt Designer,VS Code使用designer,可能的报错

Qt designer&#xff1a;可直接在designer界面&#xff0c;使用拖拽的方式设计需要的界面&#xff0c;可设定部分属性。安装Pyside2后&#xff0c;designer默认在python安装目录的Lib/sit_packages/PySide2文件夹中。designer使用&#xff1a;① 双击打开designer.exe&#xff…

前端常见安全问题 + 防御方法 + 面试回答

目录 XSS&#xff08;跨站脚本攻击&#xff09;CSRF&#xff08;跨站请求伪造&#xff09;SQL 注入文件上传漏洞其他前端常见安全问题面试常见问答 1. XSS&#xff08;跨站脚本攻击&#xff09; 定义 XSS&#xff08;Cross-Site Scripting&#xff09;是一种 通过注入恶意脚…

jxWebUI--下拉选择框

下拉选择框提供了预先定义好的选项&#xff0c;用户只能在这些选项中选择输入。 combobox 定义格式 combobox 控件名 属性列表 ;属性 bind 类型&#xff1a;string 缺省值&#xff1a; 输入控件所绑定的变量名。当给输入控件bind了一个变量名后【bindbind_var_name】&#xff0…

大模型时代:用Redis构建百亿级向量数据库方

大模型时代&#xff1a;用Redis构建百亿级向量数据库方案第一章&#xff1a;大模型时代的向量数据库挑战1.1 大模型时代的特征与需求1.2 向量数据库的核心价值1.3 百亿级向量的技术挑战第二章&#xff1a;Redis作为向量数据库的优势2.1 Redis的核心优势2.2 Redis向量搜索模块&a…

jsqlparser(六):TablesNamesFinder 深度解析与 SQL 格式化实现

在数据库应用开发中&#xff0c;SQL语句的解析和处理是一项常见而重要的任务。本文将深入探讨 JSQLParser 中的 TablesNamesFinder 类&#xff0c;分析其核心原理、与 AST 访问接口&#xff08;CCJSqlParserVisitor &#xff09;的关系、使用场景&#xff0c;并通过实际代码示例…

Python训练营打卡Day49-神经网络调参指南

知识点回顾&#xff1a;随机种子内参的初始化神经网络调参指南 参数的分类调参的顺序各部分参数的调整心得 作业&#xff1a;对于day41的简单cnn&#xff0c;看看是否可以借助调参指南进一步提高精度。 随机种子 import torch import torch.nn as nn# 定义简单的线性模型&…

Elasticsearch 常用任务管理命令及实战应用

常用任务管理命令 列出所有任务 curl -X GET "http://<es_host>:<es_port>/_tasks?detailedtrue&pretty" -H Content-Type: application/json获取特定类型的任务 curl -X GET "http://<es_host>:<es_port>/_tasks?actions<act…

Java试题-选择题(26)

Java试题-选择题(26) 题目 下列有关Thread的描述,哪个是正确的 ? A:启动一个线程的方法是:thread. run() B:结束一个线程的通常做法是:thread. stop() C:将一个线程标记成daemon线程,意味着当主线程结束,并且没有其它正在运行的非daemon线程时,该daemon线程也会自…