Django笔记一:搭建Django环境与URL路径访问

news2024/11/16 9:57:47

        博主之前学从Java后端开发,后面获取到读研资格,想着未来转算法岗,初学Python,发现Python还挺有趣的,由于之前所学后端缘故,有点后端情节,想学习一下Django框架(python的web框架),技多不压身,开学!

一、下载Django环境

        使用Django进行开发基本就需要三件套,Python、Django和Pymysql。本人采用的开发环境如下:

环境版本号
Python3.12
Django5.0.3
Pymysql1.1.0

        上面这一套环境是本人学习Django的使用环境,基本使用上没有出现版本不适配的问题,基本可以放心学习使用。有的人使用pip,有的人使用anaconda,两种方式安装环境的方式不一样,大家可以自行选择。不过能说明的就是,无论哪种方式安装环境,都是能正常使用Django开发的。

二、构建Django项目

        我这里使用的是Pycharm专业版,记住一定是要专业版,社区版是不能用作web开发的,会有限制的,大家可以去学校认证或者破解。

        新建一个Project,选择Django,选择好环境,我这里使用的是anaconda虚拟环境,基本按照下面这张图的说明就能正常创建一个自己定义的Django文件。

         新建好的Django文件夹,基本只有这几个文件,由于初学,我对这几个文件暂时不是很熟悉,后续学习继续补充。

        最后在右上角启动Django,对了,Django有一个特性,也就是热部署,每一次完成代码的更新,不需要重启Django,只需要ctrl+s保存代码,就会自动更新

三、Django中接口与Url配对

        进入urls.py 文件,这个文件就是接口函数与url配对的设置文件。

        这里的接口函数就是类似与java中的每一个controller里面的接口函数,也可以解释为访问url之后进入到的函数。

         例如,我这里写了一个接口函数,名字为hello_index,在 urlpatterns 中配置好这个接口函数的访问路径,也就是path()的第一个参数,由于我这里是空路径,也就是访问默认路径就会触发这个接口函数,这个接口函数的内容是返回”主页“这个字符串。访问效果可以看下图。

         也许讲到这里,大家会有一些儿懵,我再解释一下我自己的理解。

接口函数:也就是一个def函数,它里面的参数默认带一个request对象,这个对象包括请求体的所有信息,包括请求头,参数等等;

urlpatterns:这个就是一个url与接口函数映射的变量,类型是一个列表,在这个变量里面使用path函数来定义映射;

path函数:path函数第一个参数是配对url,第二个是接口函数(也就是你想配对哪个接口函数),第三个就是name,也就是给这个配对起一个名字(后续我可以根据配对的名字,反向找到这个请求url与接口函数)

四、Django的多模块与Url配置

        在Django的项目中,基本都会遇到分模块开发的状态,例如一个模块只负责图书相关的业务,一个模块只负责电影相关的业务,等等。Django提供了新建模块的命令,命令如下:

python manage.py startapp xxx   (xxx为业务名称)

例如:
python manage.py startapp test1

        敲完命令之后,目录下面就会多一个文件夹,我这里是test1,那么目录下面就会多一个test1文件夹。 

        那么,问题又来了,我们前面说,如果是写接口函数以及Url的配置,我们都是在最开始的默认主文件夹下的urls.py下编写和配置的,那么随着模型数目的增大,全部都写在一个文件里面,就会导致难以观看和管理,也不方便更改。当然,这个也是有解决方法的,那么就是book模块相关的url和接口函数只写在book模块里,movie模型相关的也只写在movie模块里,最后只需要在默认的urls.py文件里面配置一下就行,这样子达到了解耦的效果。       

         首先,在自身模块中,我们在views文件中,写接口函数。

         然后创建一个urls.py文件,大致写法可以参照默认的urls.py文件(其实基本就是自己手写写一个urlpattrens列表变量)。

        基本都可以参照默认的urls文件书写。 

        最后一步,就是在默认的urls文件中配置本模块的urls文件。使用path函数,然后标记这个模块的路径,例如这里是movie,也就是说以后访问movie模块所有接口函数,都需要前面加一个/movie/路径区分。

 

 五、一些细节的解释

        首先是两种请求路径的说明,可以参照下面的说明:

方式一:http://127.0.0.1:8000/movie/detail/123

方式二:http://127.0.0.1:8000/movie/detail?movie_id=123

        之前有过后端经验的人也许会明白,不过我这里再次解释一下。第一种方式只用过路径url的方式传递参数,而第二种则是将参数保存在请求头里面,后续需要从request请求体里面获取。 相信看了下面的接口函数,大家就可以明白两种的区别。

        然后就是也许很多小伙伴,会发现,urls文件中会多定义了一个变量app_name,这个变量是命名空间,可以理解会区分不同模块的一个标志。

        因为在讲解path函数的时候,我们讲到过第三个参数,也就是name参数,这个参数是为这一次url与接口函数的匹配取的一个名字,但是在偌大的项目中,随着模块数的增多,后面经常会遇到name相重复的情况,所以这个时候引入模块命名空间,用于区分不同模块,即使后面配对名称相同,有不同的命名空间,所以就不会担心重名问题。

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

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

相关文章

Unix时间戳与C语言的time.h库函数

目录 Unix时间戳介绍 UTC/GMT 时间与秒计数器转换代码 time.h库函数 Unix时间戳介绍 Unix 时间戳(Unix Timestamp)定义为从UTC/GMT的1970年1月1日0时0分0秒开始所经过的秒数,不考虑闰秒 时间戳存储在一个秒计数器中,秒计数器…

Ajax 揭秘:异步 Web 交互的艺术

Ajax 揭秘:异步 Web 交互的艺术 一 . Ajax 的概述1.1 什么是 Ajax ?1.2 同步和异步的区别1.3 Ajax 的应用场景1.3.1 注册表单的用户名异步校验1.3.2 内容自动补全 二 . Ajax 的交互模型和传统交互模型的区别三 . Ajax 异步请求 axios3.1 axios 介绍3.1.1 使用步骤3…

车辆重识别(关于卷积神经网络一些资料)2024/9/11

关于卷积神经网络的介绍 一,全连接神经网络 1,全连接神经网络的整体结构 X代表左边输入的数据(向量或者矩阵等等),Y代表模型对数据处理之后的结果,中间的节点都可以算作为隐藏层。 2,全连接神经…

【C++二分查找 容斥原理】1201. 丑数 III

本文涉及的基础知识点 C二分查找 容斥原理:组合数学汇总 LeetCode1201. 丑数 III 丑数是可以被 a 或 b 或 c 整除的 正整数 。 给你四个整数:n 、a 、b 、c ,请你设计一个算法来找出第 n 个丑数。 示例 1: 输入:n …

读构建可扩展分布式系统:方法与实践03分布式系统要点

1. 通信基础 1.1. 每个分布式系统都包含通过网络进行通信的软件组件 1.2. 硬件 1.2.1. 全球互联网就是一台异构机器,由不同类型的网络通信通道和设备组成,它们每秒将数百万条消息通过网络传送到预定目的地 1.2.2. 对于单个光纤链路,可以提…

使用gzexe保护Kylin Linux Shell脚本安全

使用gzexe保护Kylin Linux Shell脚本安全 1、加密脚本2、解密脚本3、注意事项 💖The Begin💖点点关注,收藏不迷路💖 在Kylin Linux中,若需保护shell脚本内容不被直接查看,可以使用gzexe工具进行加密。 1、…

R语言机器学习算法实战系列(一):XGBoost算法(eXtreme Gradient Boosting)

介绍 XGBoost(eXtreme Gradient Boosting)是一种基于梯度提升决策树(GBDT)的优化算法,它在处理大规模数据集和复杂模型时表现出色,同时在防止过拟合和提高泛化能力方面也有很好的表现。以下是XGBoost算法的原理和应用方向的详细介绍: 算法原理 目标函数:XGBoost的目标…

Android 测试机

要测手机应用,直接挂电脑上跑虚拟机的话,怀疑电脑都要起火了。 eBay 上买了个新的机器,也才 100 美元多点,机器都没有拆过,电池是完全无电的状态。 操作系统是 Android 12 的版本,升级到 Android 14 后&am…

从用户数据到区块链:Facebook如何利用去中心化技术

在数字化时代,用户数据的管理和保护已成为科技公司面临的重大挑战。作为全球最大的社交网络平台之一,Facebook不仅在用户数据的处理上积累了丰富的经验,也在探索如何利用去中心化技术,如区块链,来改进其数据管理和用户…

怎么使用ai 免费生成ppt?这4个工具可以帮忙

随之AI工具的流行,网络上也涌现了一批 AIPPT 工具,可以在办公上帮助我们节省很多制作PPT的时间。通常它们的操作也比较简单,所以适合很多人使用。为了可以帮助大家提高办公效率,我在这里跟大家分享4款可以免费使用的AIPPT制作工具…

STM32——看门狗通俗解析

笔者在学习看门狗的视频后,对看门狗仍然是一知半解,后面在实际应用中发现它是一个很好用的检测或者调试工具。所以总结一下笔者作为初学小白对看门狗的理解。 主函数初始化阶段、循环阶段和复位 众所周知,程序的运行一般是这样的&#xff1…

解决项目启动时报“找不到符号”问题

前言 在Java开发过程中,遇到“找不到符号”的错误是非常常见的现象。这种错误往往意味着编译器无法识别你所引用的某个类、方法或变量。本文旨在提供一套详细的排查和解决思路,帮助开发者快速定位并解决此类问题。 问题描述 “找不到符号”错误通常出…

K8S - Volume - NFS 卷的简介和使用

在之前的文章里已经介绍了 K8S 中两个简单卷类型 hostpath 和 emptydir k8s - Volume 简介和HostPath的使用 K8S - Emptydir - 取代ELK 使用fluentd 构建logging saidcar 但是这两种卷都有同1个限制, 就是依赖于 k8s nodes的空间 如果某个service pod中需要的vol…

2024年职场人士都在用的PDF转换工具大赏

PDF文件已经变得越来越常见了,是不是不知不觉你收到的或者发出去的文件都是这个格式。它可以巩固格式,但是编辑起来还是有一定难度的。这篇文章我来分享一些可以从pdf转换器免费版官网下载的工具。 1.Foxit PDF转换大师 链接一下>>https://www.p…

sqlgun靶场漏洞挖掘

进入首页首先看到一个搜索框,那么我们试一下xss 用script弹了个一 接下来我们尝试一下sql注入 这里我们使用联合查询查到了他的数据库名,那么这里也就存在SQL注入了 这里存在SQL注入那么我们就尝试一下是否可以注入木马来getshell 首先我们扫描目录&…

YOLO介绍—datawhale

速度快:YOLO的设计目标是实现快速的对象检测,它在保持相对高准确度的同时,能够实现高帧率的实时检测。 易于实现:YOLO的架构相对简单,易于理解和实现,这使得它在学术和工业界都得到了广泛的应用。 版本迭…

机器学习(西瓜书)第 14 章 概率图模型

14.1 隐马尔可夫模型 机器学习最重要的任务,是根据一些已观察到的证据(例如训练样本)来对感兴趣的未知变量(例如类别标记)进行估计和推测。概率模型(probabilistic model)提供了一种描述框架&a…

快讯丨深蓝L07将于9月20日正式上市

9月13日获悉,继第二十七届成都车展首发亮相后,深蓝汽车全新“科技智享中型轿车”——深蓝L07,将于9月20日迎来正式上市! 作为深蓝汽车旗下第二款轿车力作,深蓝L07携#左手深蓝超级增程,右手华为乾崑智能#两…

自动驾驶:LQR、ILQR和DDP原理、公式推导以及代码演示(六、ILQR正则化和line search)

(六)ILQR正则化和line search 1. ILQR正则化 在iLQR中,我们通常线性化系统动力学并对目标函数进行二阶近似。在反向传播步骤中,我们需要计算逆矩阵(控制变量对目标函数的二阶导数矩阵),用以更…

通信工程学习:什么是FDMA频分多址

FDMA:频分多址 FDMA(Frequency Division Multiple Access,频分多址)是一种在无线通信领域广泛应用的多址技术。该技术通过将可用的频谱资源按频率划分,把传输频带划分为若干较窄且互不重叠的子频带(或称信道…