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

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

一、下载Django环境

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

|---------|---------|
| 环境 | 版本号 |
| Python | 3.12 |
| Django | 5.0.3 |
| Pymysql | 1.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提供了新建模块的命令,命令如下:

bash 复制代码
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/**路径区分。

五、一些细节的解释

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

bash 复制代码
方式一: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相重复的情况,所以这个时候引入模块命名空间,用于区分不同模块,即使后面配对名称相同,有不同的命名空间,所以就不会担心重名问题。

相关推荐
DKPT40 分钟前
数据结构之排序的基本概念
java·数据结构·笔记·学习·算法
快下雨了L1 小时前
UE5学习笔记22-武器瞄准和武器自动开火
笔记·学习·ue5
圆头圆脑圆JAVA2 小时前
Doker学习笔记--黑马
笔记·学习
机器人迈克猫2 小时前
Django_Vue3_ElementUI_Release_004_使用nginx部署
nginx·elementui·django
微刻时光2 小时前
Redis 主从复制
java·redis·笔记·github
m0_689618283 小时前
基于铁-多巴胺复合物的水凝胶有啥用?拉伸、粘合、生物相容全具备!
笔记
滴水成冰-4 小时前
Kotlin-Flow学习笔记
笔记·学习·kotlin
圆头圆脑圆JAVA5 小时前
MQ(RabbitMQ)笔记
笔记·rabbitmq·java-rabbitmq
mit6.8245 小时前
[Linux#49][UDP] 2w字详解 | socketaddr | 常用API | 实操:实现简易Udp传输
linux·网络·c++·笔记·后端