当前位置: 首页 > article >正文

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

        博主之前学从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.kler.cn/a/303440.html

相关文章:

  • Android Studio 将项目打包成apk文件
  • Nuxt 版本 2 和 版本 3 的区别
  • 【OceanBase 诊断调优】—— ocp上针对OB租户CPU消耗计算逻辑
  • P8680 [蓝桥杯 2019 省 B] 特别数的和
  • 11Java面向对象高级(篇2,Java程序的核心套路!!!!)
  • 使用electron-egg把vue项目在linux Ubuntu环境下打包并安装运行
  • 数据结构-线性表顺序单项链表双向链表循环链表
  • B端界面看国外,清新活泼又可爱。
  • 31. 如何在MyBatis中使用自定义拦截器?有哪些常见应用场景?
  • ASPICE评估:汽车软件质量的守护神
  • 强!推荐一款Python开源自动化脚本工具:AutoKey!
  • EmguCV学习笔记 C# 11.6 图像分割
  • 力扣最热一百题——矩阵置零
  • 技术周总结 09.09~09.15周日(C# WPF WinForm)
  • 【运算你真的理解吗?】
  • 在 Java 编程中优化字符串处理:避免 `StringIndexOutOfBoundsException` 和提升代码可读性
  • ros中地面站和无人机跨平台数据传递,使用 UDP 进行跨平台传输(python代码)
  • 【物理编程】解决物理压力的正确画法
  • 记一次Hiveserver2连接异常的解决-腾讯云-emr
  • 量化交易策略:掌握能量潮指标,提前捕捉卖出时机(Python代码解析)
  • vue3项目中使用pdfjs-dist踩坑记录
  • Docker基本管理--Dockerfile镜像制作(Docker技术集群与应用)
  • ubuntu20.04 Qt6引用dcmtk库实现dicom文件读取和字符集转换
  • CSP-J 之计算机基本结构
  • YOLO介绍—datawhale
  • C语言 | Leetcode C语言题解之第404题左叶子之和