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

相关推荐
whale fall2 小时前
【剑雅14】笔记
笔记
星空的资源小屋3 小时前
跨平台下载神器ArrowDL,一网打尽所有资源
javascript·笔记·django
Xudde.4 小时前
Quick2靶机渗透
笔记·学习·安全·web安全·php
AA陈超4 小时前
Git常用命令大全及使用指南
笔记·git·学习
18你磊哥5 小时前
Django WEB 简单项目创建与结构讲解
前端·python·django·sqlite
愚戏师5 小时前
Python3 Socket 网络编程复习笔记
网络·笔记
降临-max6 小时前
JavaSE---网络编程
java·开发语言·网络·笔记·学习
大白的编程日记.7 小时前
【计算网络学习笔记】MySql的多版本控制MVCC和Read View
网络·笔记·学习·mysql
Dillon Dong7 小时前
Django + uWSGI 部署至 Ubuntu 完整指南
python·ubuntu·django
IMPYLH8 小时前
Lua 的 require 函数
java·开发语言·笔记·后端·junit·lua