登录时提示 未找到匹配url和请求方式的路由_不求甚解系列,快速上手python Django框架3.0(二)编写URL...

a3a053862793cb1429d0ce1bef492c32.png

简要回顾一下上一期我们提到了Django的MTV模式,这期我们在讲MTV前先看来看如何配置URL。URL配置是链接用户请求和MTV模型之间的桥梁,先看下图

f8a7878f1ab47fd794e510bc33370d5c.png

  • 编写URL

URL(Uniform Resource Locator,统一资源定位符)是对可以从互联网上得到的资源位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,用于指出文件的路径位置。简单地说,URL就是常说的网址,每个地址代表不同的网页,在Django中,URL调度器也称为URLconf。

我们首先来先分步骤看看Django都干了什么来处理这个请求:

  1. 首先Django确定要使用的根URLconf模块。通过 ROOT_URLCONF 来设置,具体在 settings.py 配置文件中。但是如果传入HttpRequest对象具有urlconf属性(由中间件设置),则其值将替换ROOT_URLCONF设置。

e3b64afba2155c36c97f13e6e47f00a2.png

2. Django加载该Python模块并查找该变量urlpatterns。这应该是一个Python的django.conf.urls.url()实例列表。


3. Django按顺序运行每个URL模式,并在匹配所请求的URL的第一个URL中停止。


4. 一旦正则表达式匹配,Django将导入并调用给定的视图,这是一个简单的PYthon函数(或基于类的视图)。该视图通过以下参数传递:

  • 4.1 一个实例 HttpRequest。
  • 4.2 如果匹配的正则表达式没有返回任何命名组,那么来自正则表达式的匹配将作为位置参数提供。
  • 4.3 关键字参数由正则表达式匹配的任何命名组组成,由可选kwargs参数中指定的任何参数覆盖django.conf.urls.url()

5. 如果没有正则表达式匹配,或在此过程中的任何一点出现异常,Django将调用适当的错误处理视图。

简单的说就是先确定根URLconf位置,查找全局(项目)路由表,再根据需要查找子应用路由表,再匹配并选择正确的视图(View)。

26991cf9d19a7712fb72c364fedccd94.png

我们首先打开根目录下的urls.py看下默认自带的代码

2926c8f7479f41bce4064f3fd7a43e16.png

这里默认引入了admin模块,就是Django自带的后台管理模块,然后通过urls模块引入了path函数。path是个路由解析方法,帮助我们解析URL地址,告诉我们去哪里寻址或者url映射哪个view函数。

urlpatterns:整个项目的URL集合,每个元素代表一条URL信息。每一个 Django 路由表模块(urls.py)中都约定必须包含一个urlpatterns列表用来存放路由映射表

path( ) 标准语法: (<>为必须的参数,[]为可选参数)

path(<route>, <view>, [name=None,**kwargs])

route 表示路径,从端口以后的URL地址,到结束

从 urlpattern 的第一项开始,按顺序依次匹配列表中的项,直到找到匹配的项。

view 表示route匹配成功后,需要调用的视图,view 必须是一个函数

name 表示别名,这个名字会应用在模板里,为什么要起名字呢,因为可能你url换了,但是只要名字没换,你就不需要改模板

**kwargs 表示一个字典,传给view函数。可以实现传参,这个我们下面一点讲

这里admin/就是路径,我们可以通过127.0.0.1:8000/admin访问这个地址,访问这个地址映射的view函数就是admin.site.urls

我们打开网址就可以看到admin后台登录的页面了

807d098a7770d52ed613445bb560bbbf.png

admin.site可以理解成是Django内置的视图函数,其他情况我们需要自己写view视图函数,当包括其它 URL 模式时你应该总是使用include(),admin.site.urls是唯一例外。因为我们发现根目录下是没有views.py这个文件的,也就意味着不建议把view视图函数写在根目录下,我们需要写在应用目录下,每个应用目录下都有一个views.py以及urls.py,如果没有我们需要自己新建一下,先看下这时的目录结构,然后我们先用一个简单的视图函数来再看一下当如果指向应用下的view函数时,url映射应该怎么编写。

7bf0cc639a51a958f1eed0ae2af91687.png

我们在应用index的views.py里加入第一个函数,返回Hello World!

from django.http import HttpResponse


def index(request):
    return HttpResponse('Hello World!')<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值