【Django学习】(三)全局路由配置与匹配规则&创建视图函数

16 篇文章 4 订阅
订阅专栏

前言:

1、描述两种开发模式的区别:

1.1、前后端分离:

  1. 前端和后端分别由不同的开发人员开发维护;
  2. 前端可以通过调用接口获取后端返回的数据 展示动态的数据;
  3. 出现问题容易区分责任;
  4. 前后端解耦合,可以同时开发,提高开发效率;
  5. 一个后台即可满足网站、app、小程序等多种应用的需要

1.2、前后端不分离:

  1. 前端和后端不分别由相同的开发人员开发维护;
  2. 客户端只需要请求不同的页面,服务器会完成页面上的所有数据逻辑,所以 http 请求次数较少;
  3. 出现问题不容易区分责任;
  4. 每个请求都是一个 HTML,会有大量的冗余数据;
  5. 响应数据是 HTML,只能适应单一客户端,当需要多端支持时如要单独开发

2、Django中前端向后端传参的方式有哪些? 后端如何接收?

  • 前端向后端传参的方式:
    前端可以通过不同类型的请求(get\post\put等)向后端传递参数:1、body中form表单;2、body中json数据;3、body中file文件;4、param传参:url后面直接拼接(url?参数1&参数2)
  • 后端如何接收
    • 后端通过前端发起的ajax请求,从数据库读取数据后以json格式的方式返回给前端

先明白一个名词

什么是路由?
url与后端视图的一一映射关系
  • 类似于导航
  • 类似于路由器

主路由在项目同名目录下的urls.py文件中定义,是Django解析路由的入口

一、路由的配置:

全局路由表:

urlpatterns = [
    # path('admin/', admin.site.urls),
    path('projects/',include('projects.urls')),
    path('projects/',index1),
    # path('interface/',include('interfaces.urls'))
]

projects应用中子路由的urls.py

urlpatterns = [
    # path('admin/', admin.site.urls),
    path('index1/',index1),
    re_path('^index2/$',index2)
]
说明:
1.urlpatterns为名称固定的列表
2.列表中一个元素,代表一条路由
3.定义路由
方式一:(使用path函数)
a.调用path函数,第一个参数为url路径字符串(去除http://ip:port/)
b.不能以斜杠开头
c.第二个参数可以为需要调用的视图函数名(不可以加括号)

方式二:(使用re_path)
a.re_path, 第一个参数为url路径字符串(正则表达式,一定要有^和$)
b.第二个参数可以为需要调用的视图函数名(不可以加括号)

 还有种引用视图函数的方法是,在子路由文件中直接导入views文件

from django.urls import path, re_path
from projects.views import index1, index2,MyView
#导入views视图文件
from projects import views

urlpatterns = [
    # path('admin/', admin.site.urls),
    path('index1/', index1),
    #第二个参数使用views.视图函数
    path('index1/', views.index1),
    re_path('^index2/$', index2),
]
4.匹配规则
a.列表中的元素,从上到下进行匹配
b.一旦匹配成功,停止匹配,会自动调用path(re_path)函数的第二个参数指定的函数
c.如果匹配不成功,会继续往下匹配
d.如果所有的路由都匹配不上,那么会抛出一个404页面(404异常)
5.子路由
a.可以在子应用中定义子路由urls.py文件
b.path函数第二个参数需要调用include函数
c.include函数的第一个参数为子路由文件的路径字符串,'子应用名.urls'
e.如果能匹配成功,会自动进入到子路由中去匹配
f.如果匹配不成功,那么会继续往下匹配

 二、视图

 定义:类似于MVC模式中的C控制器,主要用于业务逻辑的处理。

projects应用的views.py

views视图文件里写了我们接口的处理逻辑,并且需要返回的结果;

这里我们定义了3个视图函数,index1/index2是对index视图函数的改写

from django.shortcuts import render
import requests
from django.http import HttpResponse, JsonResponse
from rest_framework.response import Response


# Create your views here.
def index(request):
    return HttpResponse('哈喽大佬,我是HttpResponse')
#根据不同请求类型,返回不同的json数据
def index1(request):
    if request.method.upper() == 'GET':
        return JsonResponse("哈哈哈哈,我是get请求数据!!!",safe=False)
    elif request.method.upper() == 'POST':
        return JsonResponse("嘿嘿嘿,我是post请求返回数据",safe=False)
    else:
        return JsonResponse("我是其他请求返回数据",safe=False)
def index2(request):
    if request.method.upper() == 'GET':
        return JsonResponse("哈哈哈哈,我是index2的get请求数据!!!",safe=False)
    elif request.method.upper() == 'POST':
        return JsonResponse("嘿嘿嘿,我是index2的post请求返回数据",safe=False)
    else:
        return JsonResponse("我是index2的其他请求返回数据",safe=False)
  •  index视图函数:
    • 视图函数的第一个参数是HttpRequest对象或者子类对象
    • WSGIRequest是HttpRequest子类
    • 一定要返回一个HttpResponse对象或者子类对象

 当使用postman工具请求对应的路由地址时,返回了对应视图函数的json格式结果数据 :

http://127.0.0.1:8000/projects/index1/

当我们请求另一个路由时: http://127.0.0.1:8000/projects/index2/ ,返回了对应视图函数的返回值

django项目搭建与Session使用详解
09-20
在项目中创建视图文件,处理后端逻辑,并在 `urls.py` 中配置URL由,使URL能映射到相应的视图函数。 6. **配置 Session** - Django 内置了对Session的支持,首先在 `settings.py` 中确保 `'django.contrib....
获取Django项目的全部url方法详解
09-21
而对于`RegexURLResolver`,我们需要递归调用`get_all_url`函数,将当前URL前缀(`prev`)与子URL配置合并,然后继续遍历子URL模式。 在`get_all_url`函数中,我们使用了一个可选参数`is_first`来决定是否在开始时...
Django配置
DD1852的博客
08-15 1877
Django
Django配置
记录学习过程,欢迎讨论交流~
09-23 678
项目的配置、静态文件的配置由、由解析顺序、访问流程、由命名和命名空间、resverse 反解析
Django由层urls.py匹配原则,有名分组于无名分组
weixin_46407419的博客
03-01 357
由层urls.py 匹配 第一个问题: url方法第一个参数是正则表达式 # 只要第一个参数正则表达式能够匹配到内容,那么就会立刻停止往下匹配,直接执行对应的视图函数 eg:url(r'test',views.test) url(r'testadd',views.testadd) # 通过上述的描述那么这个案例就永远访问不到testadd由 解决上述问题: url(r'test...
Python Django由详解
最新发布
qq_52053775的博客
02-10 2622
在实际开发过程中,一个Django 项目会包含很多的 app,这时候如果我们只在主由里进行配置就会显得杂乱无章,所以通常会在每个app 里,创建各自的 urls.py 由模块,然后从根由出发,将 app 所属的 url 请求,全部转发到相应的 urls.py 模块中。而这个从主由转发到各个应用由的过程叫做由的分发。
Django定义由_子由_函数视图
weixin_43865008的博客
10-08 1072
本章节主要学习如果在 Django框架中自定义主由,同意了解了由的定义以及定义主理由的痛点,并且通过定义子由的形式来处理了由的痛点。
django中文学习.pdf
03-10
Django中文学习.pdf》是一本关于Web应用框架Django的中文教程,涵盖了从入门到高级的全方位知识。Django是一个高效、免费且开源的Python Web框架,它遵循MTV(Model-Template-View)设计模式,旨在简化Web开发过程...
Django框架中间件(Middleware)用法实例分析
09-19
Django框架中间件是其核心特性之一,它提供了一种灵活的方式来扩展Django应用程序的功能,无需改动现有的视图或模型代码。中间件可以看作是插入到Django处理请求和响应流程中的小型独立功能模块,它允许开发者在特定...
Django缓存系统实现过程解析
09-18
视图缓存允许开发者为特定视图函数启用缓存,只需在视图函数上添加`@cache_page`装饰器,指定缓存时间即可。模板片段缓存则通过`{% cache %}`模板标签实现,可以对模板中的小块内容进行缓存。 低级别缓存API包括`...
Django3配置命名空间
12-22
概要 django配置 环境:win7 + python3.8.1 +django3.0.3 +mysql-5.7.26 1 创建工程 django-admin  startproject  DjangoView 2 创建工程中的应用 python manage.py  startapp App 3 配置由urls urlpatterns = [ path(r'^admin/', admin.site.urls), path('app/', include(('App.urls','App'),namespace='app')), ] 4 配置App子由的urls
Django(二)
weixin_30485799的博客
08-22 73
配置系统(URLconf) URL配置(URLconf)就像Django 所支撑网站的目录。它的本质是URL与要为该URL调用的视图函数之间的映射表;你就是以这种方式告诉Django,对于这个URL调用这段代码,对于那个URL调用那段代码。 ''' urlpatterns = [ url(正则表达式, views视图函数,参数,别名),]...
【4】Django----URL配置
FOR.GET
05-20 4753
一、URL配置的用途   URL是Django收到用户请求后,根据用户请求的URL地址和urls.py里配置的映射关系,以正确的确定出某个URL调用哪一段逻辑代码来对应执行相应的视图函数视图类,最后由视图返回给客户端想要接收的数据。   简单的例子: from django.urls import path urlpatterns = [ path('index', views.index), ] # index这个由对应着视图函数中index这个方法,浏览器输入这个链接,就会响应到ind
Django3.2学习】05-由进阶
qq_41224289的博客
04-10 1242
由进阶 ​ 在django中所有的由最终都会保存在一个叫urlpatterns中,urlpatterns必须声明在主应用下的url.py总由中,这是由配置文件settings中的ROOT_URLCONF = '主应用名称.urls'配置的。 ​ 这里的配置当然可以进行修改,但是必须确保修改后的径文件内存在urlpatterns变量,而且必须是列表类型。 ​ 在django运行中,当客户端发送了一个http请求到服务端,服务端的web服务器则会从http协议中提取url地址,从程序内部找到项目中添加到
Django 何为应用app,多应用规则,多模板匹配规则
ck784101777的博客
05-16 1081
目录 1.应用app 2.创建应用app 3.配置多应用规则 4.模板匹配规则 1.应用app 在Django框架中,当项目变得巨大的时候,各种各样的功能全都放在主项目文件,就会显得太过杂乱,缺乏逻辑性和层次性。 Django中App的作用就在于此,我们可以将不同类型的功能分成多个不同的App应用来开发,每个app对应其功能。Django App对程序结构进行了解耦,在团队开发中,架构师对程序团队进行开发分配,例如一组开发app1,二组开发app2,等。 注意:这里指的应用app实际的含义
django urls匹配分发
lichji2016的博客
11-21 721
django urls匹配分发 django urls匹配分发   一.urls配置(URLconf)就像Django 所支撑网站的目录。它的本质是URL与要为该URL调用的视图函数之间的映射表;你就是以这种方式告诉Django,对于这个URL调用这段代码,对于那个URL调用那段代码。     urlpatterns = [          url(正则表达式, views视图...
Django中url匹配规则的补充
weixin_30578677的博客
07-27 471
Django中url匹配规则是在urls.py文件中配置的。 1、关于正则匹配优先级 在url匹配列表中,如果第一条和第二条同时满足匹配规则,则优先匹配第一条。 在url匹配列表中,如果第一条为正则模糊匹配,第二条为精确匹配,则优先匹配第一条。如下: url(r'^2016/([0-9]{2})/$',views.001), url(r'^2016/07/$',views.002),...
Django新手上——匹配
qq_42470018的博客
03-13 762
Django新手上——匹配 1 1. URL 1.1 定义 URL即统一资源定位符,网络资源的地址,包含对应文件的位置和浏览器对该资源的处理方式。 1.2 格式 schema://host[:port#]/path/.../[?query-string][#anchor] # 栗子:http://zdq.com/index/ **schema:**协议,如http...
Django ------ 将主由和子由进行绑定
sun9979的博客
11-15 1410
在你主由的urls.py中,最初有提供的注释,都很有用,不要轻易删,如果看着碍事就把它隐藏起来 大致说的就是,你要绑定一个子由的URL配置, 需要引入一个库,并且代码按照它给的方式写。 主由中的代码如下: from django.urls import path, re_path,include urlpatterns = [ path('admin/', admin.site....
django创建对应功能的视图函数
06-08
要将这个视图函数与 URL 映射关联起来,可以在 Django 项目中的 urls.py 文件中添加如下代码: ```python from django.urls import path from . import views urlpatterns = [ path('hello/', views.hello, name=...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 【已解决】mac电脑终于卸载掉了这个“微信键盘”输入法 17811
  • 【网络基础】TCP协议之三次握手&四次挥手--详解与常见问题解答 6222
  • python警告:Workbook contains no default style, apply openpyxl‘s default warn 5427
  • 【python】关于openpyxl的基本使用方法-看这篇就够了 5091
  • 【python】使用openpyxl库的Alignment模块设置单元格的对齐方式 3388

分类专栏

  • 异常处理 6篇
  • 智能驾驶 3篇
  • 测试之道
  • Vue 5篇
  • 工具类 10篇
  • django 16篇
  • python编码随笔 7篇
  • python之接口自动化 1篇
  • python编码基础 8篇
  • 网络基础 1篇
  • python之UI自动化 2篇

最新评论

  • 【已解决】mac电脑终于卸载掉了这个“微信键盘”输入法

    我方大墩子: 这输入法真的找词汇要找半天,很烦,准备卸载

  • 【已解决】mac电脑终于卸载掉了这个“微信键盘”输入法

    一个菜鸟的成长指路: 感谢感谢确实有用

  • 本地复制文本无法在Ubuntu终端中粘贴问题

    高老庄里的高小翠: 可能复制的时候带了格式表情包

  • 本地复制文本无法在Ubuntu终端中粘贴问题

    moyan_rrr: 我就是手写的可以,这是为什么?

  • 【已解决】解决ubuntu系统突然连不上网络问题

    高老庄里的高小翠: 哈哈哈,不客气表情包

大家在看

  • 潜艇伟伟迷杂交版植物大战僵尸2024最新免费安卓+ios苹果+iPad分享
  • 小学阶段,核心素养是培养:数感、量感。如何理解“数感、量感”?
  • 使用 GoPhish 和 DigitalOcean 进行网络钓鱼
  • 六、若依--P15--P16【黑马程序员Java最新AI+若依框架项目开发新方案视频教程,基于RuoYi-Vue3前后端分离版本,从前端到后端再到AI智能化应用全通关】
  • 使用 Outlook 窃取 NetNTLMv2 哈希

最新文章

  • 【已解决】解决ubuntu系统突然连不上网络问题
  • 【已解决】执行sudo apt-get install open-vm-tools 提示未满足依赖关系(破坏了软件包之间的关系),无法安装
  • Ubuntu20.04 (VMware 虚拟机) fdisk -l 权限不够的解决办法
2024年7篇
2023年52篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高老庄里的高小翠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司大芬seo排名罗湖关键词排名包年推广大运网站优化排名福永优秀网站设计平湖企业网站建设横岗网站seo优化布吉百姓网标王推广观澜百度竞价包年推广南山百度竞价丹竹头百度竞价包年推广平湖百度网站优化排名福田百搜词包福田网站搭建丹竹头seo优化光明百度网站优化排名东莞seo网站推广坪山网站推广广州百度竞价包年推广大浪标王平湖关键词按天收费深圳网站制作罗湖营销网站惠州关键词排名包年推广南山网站开发大鹏百度关键词包年推广大鹏网站改版横岗百度竞价包年推广大芬模板网站建设大浪网页设计惠州营销型网站建设歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化