Django之初入门

news2024/12/23 23:22:34

一)Django简介

1.简介

Django是一个开源的Python Web框架,它以简洁高效的方式帮助开发者构建复杂的Web应用程序。Django采用了MVC(Model-View-Controller)的架构模式,通过强大的工具和功能,提供了一套完整的解决方案,使开发过程更加简单、快速和可扩展。
Django拥有丰富的内置功能,包括ORM(对象关系映射),用于管理和操作数据库的模块;表单验证系统,用于处理用户输入数据的验证和处理;自动化的管理界面,用于管理网站的后台;以及强大的URL路由系统,用于定义URL和视图函数之间的映射关系。
此外,Django还支持插件化开发,开发者可以通过使用第三方插件来扩展框架的功能。Django的插件生态系统非常丰富,涵盖了各种常见需求,如用户认证、缓存、国际化等。
Django还注重安全性,提供了一系列的安全机制,如跨站点请求伪造(CSRF)保护、XSS(跨站点脚本)防御、SQL注入防御等。
总之,Django是一个功能强大、易于学习和使用的Web开发框架,它的高度可定制性和灵活性使得开发者能够构建出高质量、可扩展的Web应用程序。无论是开发小型网站还是大型企业级应用,Django都是一个值得考虑的选择。

2.关于MVC与MTV的解释

MVC可以分为三个字母理解:

  • M----model,即模型,数据库操作
  • V----view,即视图,前端页面
  • C----Controller,即控制器,控制访问逻辑

1695184817563.png
关于MVC的优势也有很多,例如:

  • 低耦合
  • 开发快捷
  • 部署方便
  • 可重用性高
  • 维护成本低

MVC 模式使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。
1695184862496.png
MTV也可以分为三个字母理解:

  • M----model,即模型,数据库操作
  • T----template,即模板,前端网页页面(html)
  • V----view,即视图,业务逻辑,在适当的时候调用M和T

1695184853638.png

3.总结

Django 是一个由 Python 编写的一个开放源代码的 Web 应用框架。使用 Django,只要很少的代码,Python 的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容。
Django并不是完全的MVC模型,只是说Django是基于“MVC”模型开发出来的“MTV”模型。

二)初体验

1.安装

Django的版本较多,其中更是有着Django1和Django2的较大差分,那么本文为了避免较大的不兼容,所以推荐使用Django3.2的版本。
那么如何安装呢,安装方式与python的插件的安装不想而同,皆以pip方式:

pip install django==3.2

当然你也可以在前指定一个下载网址:

pip install -i https://pypi.douban.com/simple django==3.2
2.启动项目

Django的项目创建其实较为简单,我们只需要指定路径,在cmd中输入命令,即可任其自由,它会替我们做好工作:

#创建项目
django-admin startproject 项目名

例如,我需要在我的F盘的Djangopro文件夹中创建一个名为test1的项目:
image.png
我们输入命令后可以在文件中查看效果:
image.png
image.png
可以看见我们test1项目文件夹中有着一份manage.py和一份test1文件夹中包含着所有必须的py文件。

python脚本作用
init.py一个空 Python 脚本,存在的目的是告诉 Python 解释器,这个目录是一个Python 包
settings.py放 Django 项目的所有设置
urls.py存放项目的 URL 模式
wsgi.py用于运行开发服务器和把项目部署到生产环境的一个 Python 脚本

manage.py脚本文件提供了一系列维护 Django 项目的命令,通过它可以运行内置的 Django 开发服务器,可以测试应用,还可以运行多个数据库命令。几乎每个 Django 命令都要调用这些脚本。
现在我们可以用pycharm去打开这个项目,让它运行起来。
在pycharm中选中这个项目路径:
image.png
个人建议是选择一个新的窗口打开,即选择new window:
image.png
打开后我们就可以清晰的看见一个项目的基本结构:
image.png
现在我们抓紧时间启动我们的第一个项目看看效果,在项目的命令行输入:

python manage.py runserver

image.png
我们可以看见一个重要的网址名为:http://127.0.0.1:8000/。这个就是运行起来的项目的成功标志,可以在浏览器中输入此网址查看:
image.png
至此,我们的第一个Django项目就圆满启动了。

3.关于urls

urls.py更多的是负责项目url的存储与调用。我们可以做一个小实践在urls.py编写一些小程序:
image.png
那么”def hello“就是我们编写的一个函数,path是指定的访问路径,我们还需要导入HttpResponse包以完成这次的实践,那么在浏览器中输入我们编写的路径会发生什么呢?
image.png
我们还可以根据自己的需求不断增多,至此,实践结束。

4.关于app(应用)

django的app是指在一个django项目中的一个子功能模块的应用。一个项目可以有多个app,每个app负责处理特定的功能和模块。创建一个新的app可以使用命令(在Django的项目命令行中输入):

python manage.py startapp app_name

在项目的层级结构中,每个app都有自己的文件夹和配置文件。
那么我们现在创建一个名为test2的app作为例子:
image.png
在运行完命令后,我们可以看见结构目录那里多了一个名为test2的目录
image.png
这就表示我们创建成功。
点开test2目录,我们可以看见一个view.py的py文件,那么之前我们说过,view负责业务逻辑,这是什么意思,我们一般可以将函数放进view,然后urls.py这个文件就只会负责path也就是路由分发,这样程序不会过于臃肿,也极大的提升了程序的可看性。
该如何做?首先我们需要将urls之前创建的hello函数放入test2中的view.py:
image.png
那么urls.py就只剩下path路径了:
image.png
当然,我们需要使用from…impor…命令去导入test2中的view,不然无法使用hello函数。那么现在我们在浏览器中输入http://127.0.0.1:8000/wang会发生什么?
image.png
可以看见,并不影响我们的运行效果,但是我们py界面的简洁性增加,程序也不再臃肿。

5.关于路由

路由系统本质上是URL和函数的对应关系。
在Django中,路由系统是指用于将URL映射到相应的视图函数的机制。它负责将进来的URL请求与对应的视图函数进行匹配,并将请求转发给正确的视图函数进行处理。
Django的路由系统主要由以下几个部分组成:

  • URL模式:URL模式是指定义URL匹配规则的模式。在Django中,URL模式可以使用正则表达式来匹配URL。URL模式可以直接在URLconf中定义,也可以使用include()函数将URL模式分割成多个模块。
  • URLconf:URLconf是指URL配置文件,它定义了URL模式与视图函数之间的映射关系。在Django中,每个应用都有自己的URLconf文件,用于定义该应用内的URL模式。
  • 视图函数:视图函数是处理URL请求的函数,它接收请求对象作为参数,并返回一个响应对象。在Django中,视图函数可以是普通的Python函数,也可以是基于类的视图。
  • URL反向解析:URL反向解析是指根据视图函数的名称和参数,生成对应的URL。Django提供了reverse()函数用于在模板中进行URL反向解析,也可以在视图函数中使用reverse()函数生成重定向URL。

通过使用路由系统,可以实现灵活的URL匹配和处理,使得开发者能够更好地组织和管理项目的URL结构,并将不同的URL请求分发给对应的视图函数进行处理。

a.传统路由

传统的路由编写方式,view负责函数 ,urls.py界面我们只需要编写url就可以。例如之前我们在关于url中做的小实践,但是我们也可以在其中附带参数,在介绍如何附带参数前,我们需要知道get,post等方式的不同:
get请求分为:

  • 无参数请求:只有路径,没有参数--- [http://127.0.0.1:8000/wang/12/](http://127.0.0.1:8000/news/12/)
    
  • 带参数请求:在路径后面跟上 ?参数名=参数值---[http://127.0.0.1:8000/wang/?n_id=2](http://127.0.0.1:8000/news2/?n_id=2)
    

那么如何在程序中使用参数?

urlpatterns = [
    path('admin/<int:n_id>/', admin.site.urls),
    path('wang/',hello)
]

其中的int:n_id就是参数,int是指明参数是整形,而n_id就是参数名,当然你可以根据自身习惯去取名,在这里我们再复习下int这些数据类型:

  • nt,整数
  • str,字符串 /
  • slug,字母+数字+下滑线±
  • uuid,uuid格式
  • path,路径,可以包含 /

我们现在编写一个带参数的函数:
方法为:
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
url的path为:
image.png
最终效果:http:127.0.0.1:8000/work/1/
image.png
当然我们也可以选择?带参数,只需要改变下方法为:
image.png
而url的path改为:
image.png

b.正则表达式路由

正则表达式路由在Django1中用的较多,在Django2中用的较少。当然,正则表达式也有人欢喜有人愁,看个人。url映射一般是一条正则表达式,“^” 字符串的开始,“$“ 字符串的结束。一般以?p开头。
我们需要使用re_path模块来使用正则表达式,所以在使用正则表达式时不要忘记导入:

from  django.urls  import re_path

使用正则表达式时我们需要在urls.py界面设定好正则:
image.png
方法为:
image.png
这时我们只需要在url输入http://127.0.0.1:8000/work/1/,就会有以下效果:
image.png

c.路由分发

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

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

相关文章

最新版本 在线生成SSL证书源码 后台对接ssl证书api接口

SSL证书是保证网络安全的基本保障之一。向您介绍我们的在线生成SSL证书系统&#xff0c; 支持在线生成SSL证书系统&#xff0c;用户登录可在线申请SSL&#xff0c;后台对接ssl证书api接口。

金融行业如何利用软文营销进行品牌维护

金融行业作为强监管行业&#xff0c;与人民财产息息相关&#xff0c;因此塑造可靠的品牌形象是金融行业必须面对的课题&#xff0c;而金融行业的特性决定了它在品牌传播与建设上会受到一定的限制&#xff0c;因此金融行业想要进行品牌维护的话&#xff0c;软文营销就是非常不错…

频频刷屏朋友圈,白酒如何越来越年轻化?来聊聊白酒企业数字化

最近&#xff0c;某白酒品牌频频吸引大众眼球&#xff0c;白酒与咖啡、巧克力等联名衍生品一经推出便掀起热潮。某商品由于太过火爆&#xff0c;甚至一度售罄下架。 不得不说&#xff0c;我国拥有超大规模内需市场&#xff0c;消费潜力巨大。 当前&#xff0c;创新消费场景加…

vue 路由中 vite 与webpack 动态 导入的方法汇总

vite 动态导入路由&#xff1a; router/index.js文件 //vite 下面寻找 views 文件夹下面所有的page.js文件 let pageList import.meta.glob(../views/**/page.json, {eager: true,import: default, }); //所有的文件 const modules import.meta.glob(../views/**/**.vue);/…

el-select 下拉框全选、多选的几种方式组件

组件一、基础多选 适用性较广的基础多选&#xff0c;用 Tag 展示已选项 <template><el-select v-model"value1" multiple placeholder"请选择"><el-optionv-for"item in options":key"item.value":label"item.la…

linux下特定usb设备的权限设置

文章目录 背景查找资料解决方案 背景 目前我在Ubuntu下使用一个USB热成像摄像头&#xff0c;通过调用它的sdk进行图像的采集以及获取对应像素点的温度。假设我现在的测试程序名称为MyApp。 当我用下面的命令运行时&#xff0c;程序是正常运行且能从热成像仪采集图像 sudo ./M…

上新!100%国产物料认证,米尔入门级国产核心板全志T113-i方案

自米尔国产全志T113系列的核心板发布以来&#xff0c;这款高性价比、低成本、入门级、高性能的国产核心板咨询不断&#xff0c;配套的开发板已经成交量数百套&#xff0c;深受工程师们的青睐&#xff0c;为了集齐T113全系列的产品&#xff0c;这次米尔发布了基于全志T113-i处理…

Spring学习笔记2 Spring的入门程序

Spring学习笔记1 启示录_biubiubiu0706的博客-CSDN博客 Spring官网地址:https://spring.io 进入github往下拉 用maven引入spring-context依赖 写spring的第一个程序 引入下面依赖,好比引入Spring的基本依赖 <dependency><groupId>org.springframework</groupId&…

DA5 网站用户没有补全的信息

目录 1.题目描述 2.输入描述 3.输出描述 4.题目分析 5.通过代码 1.题目描述 现有一个Nowcoder.csv文件&#xff0c;它记录了牛客网的部分用户数据&#xff0c;包含如下字段&#xff08;字段与字段之间以逗号间隔&#xff09;&#xff1a; Nowcoder_ID&#xff1a;用户ID …

应用在苹果应用商店该如何进行优化

众所周知&#xff0c;ASO最大化的提高应用程序在商店中的可见性&#xff0c;其目标是获得更多的下载量&#xff0c;同时它也与下载的转化率有关。 1、根据应用阶段追求不同的目标。 它可以是有机增长或转化率的提高&#xff0c;获得更多安装并降低用户获取成本&#xff0c;增加…

【Node.js】定时任务cron:

文章目录 一、文档&#xff1a;【Nodejs 插件】 二、安装与使用【1】安装【2】使用 三、cron表达式&#xff1a;{秒数} {分钟} {小时} {日期} {月份} {星期} {年份(可为空)}四、案例&#xff1a; 一、文档&#xff1a; 【说明文档】https://www.npmjs.com/package/cron 【Cron表…

Python 打印所有水仙花数

"""打印三位水仙花数介绍&#xff1a;水仙花数是指一个 n 位数&#xff0c;它的每个位上的数字的 n 次幂之和等于它本身。例如&#xff0c;153 是一个三位的水仙花数&#xff0c;因为 (1**3) (5**3) (3**3) 153。下面是一个 Python 程序&#xff0c;用于生成…

【大数据开发技术】实验04-HDFS文件创建与写入

文章目录 一、实验目标二、实验要求三、实验内容四、实验步骤 一、实验目标 熟练掌握hadoop操作指令及HDFS命令行接口掌握HDFS原理熟练掌握HDFS的API使用方法掌握单个本地文件写入到HDFS文件的方法掌握多个本地文件批量写入到HDFS文件的方法 二、实验要求 给出主要实验步骤成…

【用unity实现100个游戏之12】unity制作一个俯视角2DRPG《类星露谷物语》资源收集游戏demo

文章目录 前言加快编辑器运行速度素材(1)场景人物(2)工具 一、人物移动和动画切换二、走路灰尘粒子效果探究实现 三、树木排序设计方法一方法二 四、绘制拿工具的角色动画五、砍树实现六、存储拾取物品引入Unity 的可序列化字典类 七、实现靠近收获物品自动吸附八、树木被砍掉的…

PMP考试备考:两个月时间足够吗?

PMP&#xff08;Project Management Professional&#xff09;认证是全球范围内最受认可的项目管理专业资格之一。对于想要提升项目管理技能和职业发展的人来说&#xff0c;PMP认证是一个重要的里程碑。然而&#xff0c;很多人担心备考时间不足以充分准备PMP考试。那么&#xf…

CFimagehost私人图床本地部署结合cpolar内网穿透实现公网访问

文章目录 1.前言2. CFImagehost网站搭建2.1 CFImagehost下载和安装2.2 CFImagehost网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar临时数据隧道3.2 Cpolar稳定隧道&#xff08;云端设置&#xff09;3.3.Cpolar稳定隧道&#xff08;本地设置&#xff09; 4.公网访问测…

安防监控/视频云存储/视频智能分析:人员打架/扭打算法识别

随着社会压力激增&#xff0c;越来越多人们性格异常暴躁&#xff0c;一旦遇到摩擦与争执就很容易引起打架斗殴行为。配置TSINGSEE青犀人员打架识别算法的主要目的&#xff0c;是提高公共场所的安全性和减少危险事件的发生。通过使用打架识别算法&#xff0c;可以及时发现并识别…

Redis缓存与从数据取数据性能比较

Redis缓存与从数据取数据性能比较 为什么使用Redis 使用Redis缓存数据有多个原因&#xff0c;包括提高性能、降低数据库负载、减少响应时间和支持临时数据存储等。以下是一些主要原因以及Redis缓存的工作原理和好处&#xff1a; 1. 提高性能&#xff1a; 数据库查询通常是一…

APP推荐:安卓系统的开屏广告自动跳过助手

今天给大家推荐一款安卓系统的开屏广告自动跳过助手&#xff0c;感兴趣的朋友可以下载试试看&#xff01; 一、软件简介 安卓系统的开屏广告自动跳过助手 自动跳过软件的实现&#xff0c;一般都是基于安卓的Accessibility“无障碍服务”实现。开启了无障碍服务的软件&#xf…

【大数据开发技术】实验03-Hadoop读取文件

文章目录 Hadoop读取文件一、实验目标二、实验要求三、实验内容四、实验步骤 Hadoop读取文件 一、实验目标 熟练掌握hadoop操作指令及HDFS命令行接口掌握HDFS原理掌握HDFS的API使用方法掌握通过URL类读取HDFS上的文件内容的方法掌握FileSystem读取HDFS上文件内容的方法 二、…