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.mfbz.cn/a/875535.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

什么是交换机级联?

在现代计算机网络中,交换机级联是一种广泛应用的技术,有助于提升网络的扩展性和灵活性。本文将深入探讨交换机级联相关知识,详细介绍其基本概念和连接配置方法,并对常见技术问题进行解答。 交换机级联概述 交换机级联是指通过将…

线性基大发现

一.构造方法 1.贪心法(每一个数往里插入即可) /*贪心法构造线性基的特点: 1.从小到大排列 2.各个基的高位可能存在重复的1 2.线性基不是唯一的,与原集合的元素顺序有关*/ void insert(int x){//贪心法for(int i63;i>0;i--){i…

c#中给winform定义快捷键的几种方式

快捷键的使用在日常的开发中频率比较高,这里总结了最常见的各种快捷键的设置方式,需要的时候大家直接照抄就可以了,不用再去查询如何实现了。 文章目录 一、按钮快捷键二、菜单快捷键三、全局快捷键1、重写ProcessCmdKey2、使用KeyPreview属…

Word使用手册

修改样式 编辑word文档时,标题和正文文本通常有不同的格式,如果能将这些格式保存为样式,下一次就能直接调用样式,而不需要重复手动设置格式。 可以将样式通常保存为不同的 样式模板.docx,要调用不同样式集&#xff0…

MATLAB基础应用精讲-【数模应用】卡方拟合优度检验(附MATLAB、python和R语言代码实现)

目录 前言 几个高频面试题目 卡方分布与拟合优度的卡方检验是什么关系? 算法原理 什么是卡方检验 卡方是什么? 如何使用卡方表计算器? 什么是卡方拟合优度检验 使用条件 基本原理 数学模型 卡方检验自由度 理论频数计算 需要注意的事项 卡方检验分类 1、 独…

校园管理系统创新:Spring Boot框架应用案例

第4章 系统设计 4.1 系统体系结构 校园管理系统的结构图4-1所示: 图4-1 系统结构 登录系统结构图,如图4-2所示: 图4-2 登录结构图 校园管理系统结构图,如图4-3所示。 图4-3 校园管理系统结构图 4.2开发流程设计 系统流程的分…

走进低代码表单开发(一):可视化表单数据源设计

在前文,我们已对勤研低代码平台的报表功能做了详细介绍。接下来,让我们深入探究低代码开发中最为常用的表单设计功能。一个完整的应用是由众多表单组合而成的,所以高效的表单设计在开发过程中起着至关重要的作用。让我们一同了解勤研低代码开…

网络安全要点总结

1. 入侵检测与防御: 1)入侵检测与系统IDS(intrusion detection system):防火墙之后的第二道闸门; IDS的部署:采用镜像端口或者集线器方式;部署在:服务器交换机上,internet接入路由器后面的第一台交换机上; IRSintrusion response system入侵响应系统: 2).IPS(…

如何进行大模型训练和微调?(实战)

1、在项目中,如果prompt和function calling足够好,尽量不要微调,节约成本。 以下是针对function calling的slot,评估准确率(识别准确度)、召回率(全面率),F1值。 从中可以…

华为初级认证HCIA怎么样?

想在网络技术领域实现职业突破吗?华为HCIA初级认证是专为网络领域的新手与初学者设计的一项入门级认证。它旨在评估并确认个人对网络基本原理和技术知识的扎实掌握,是步入华为认证体系大门的基石。 一、华为HCIA 初级认证概述 华为初级认证网络工程师&am…

为OneAPI配置MySQL数据库及设置开机启动

OneAPI启动时,如果发现没有数据库他会在项目根目录自动创建SqlLit,为提高OneAPI的性能及管理,这里给出一个使用MySQL数据库的案例,同时本文介绍如何在源码部署的情况下,设置OneAPI的开机自动启动。 OneAPI的源代码安装…

【Qt】实现顶部导航栏自适应滑动效果

需求: 顶部导航栏有若干选项,可能很多,顶部区域不能完全展示,比如10个选项,界面一次只能展示五个,那么要求把后面的选项隐藏起来,并且,当点击第四个第五个按钮的时候,自…

Android Studio 加载多个FLutter项目

按顺序操作即可 选择工程 选择Modules, 导入 module 选中创建module 选择要导入的目录,只选择主目录,下面的文件不要选 添加完成,点击ok后,会进行导入 最终导入成功

【rpg像素角色】俯视角-行走动画

制作像素角色的俯视角行走动画并不像看上去那么复杂,尤其是在你已经完成了角色的4个方向站立姿势之后(其中左右方向可以通过水平翻转实现)。接下来,我会一步步为你讲解如何制作行走动画。 1. 理解行走规律 在制作行走动画之前&am…

堆排序

一:思想 堆排序(Heapsort)是指利用 堆 这种数据结构所设计的一种排序算法,它是选择排序的一种。它是通过堆来进行选择数据。 动图: 二:实现思路 假设:现在对一个7个整形的数组进行升序堆排(2 1 5 7 4 3 …

基于 CycleGAN 对抗网络的自定义数据集训练

目录 生成对抗网络(GAN) CycleGAN模型训练 训练数据生成 下载开源项目CycleGAN 配置训练环境 开始训练 模型测试 可视化结果 生成对抗网络(GAN) 首先介绍一下什么是GAN网络,它是由生成器(Generator…

【CTF Web】BUUCTF Upload-Labs-Linux Pass-13 Writeup(文件上传+PHP+文件包含漏洞+PNG图片马)

Upload-Labs-Linux 1 点击部署靶机。 简介 upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关都包含着不同上传方式。 注意 1.每一关没有固定的…

Modbus协议02:存储区简介

视频链接:【2】Modbus协议存储区说明_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV11G4y1W7pU?p2&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 1.为什么需要存储区、存储区类型及代号 2.Modbus存储区范围及地址模型

SLM561A​​系列 60V 10mA到50mA线性恒流LED驱动芯片 为智能家居照明注入新活力

SLM561A系列选型参考: SLM561A10ae-7G SOD123 SLM561A15ae-7G SOD123 SLM561A20ae-7G SOD123 SLM561A25ae-7G SOD123 SLM561A30ae-7G SOD123 SLM561A35ae-7G SOD123 SLM561A40ae-7G SOD123 SLM561A45ae-7G SOD123 SLM561A50ae-7G SOD123 …

在Webmin上默认状态无法正常显示 Mariadb V11.02及以上版本

OS: Armbian OS 24.5.0 Bookworm Mariadb V11.02及以上版本 Webmin:V2.202 非常小众的问题,主要是记录一下。 如题 Webmin 默认无法正常显示 Mariadb V11.02及以上版本 如果对 /etc/webmin/mysql/config 文件作相应调整就可以再现Mariadb管理界面。 路径…