Django URL 映射 – 操作指南

在本教程中,我们将详细了解 Django URL 映射以及如何链接 URL 请求和相应的视图。

我们将了解我们在第一篇文章中如何以及具体执行了哪些操作,以在本教程末尾输入的sayHello /页面上显示Django Hello World 。

让我们首先了解 Django URL 库。


Django URL 库的基础知识

django.urls库中,我们有将在 Web 应用程序中使用的各种函数。让我们更多地了解他们。

1.路径(路线,视图,kwargs,名称)

该函数返回一个需要包含在 urlpatterns 中的元素。也就是说,路径充当元素(例如视图)与其 URL 之间的链接。

1. 路线

这是特定视图的 URL。例如:“<name>/”是一条路线。

因此,当我们从 URL 请求此页面时,服务器将返回链接到它的视图。

2.查看

这里我们需要写下我们需要链接的视图名称。或者使用“ include”函数添加另一个 urls.py 文件。(就像在project/urls.py文件中一样)

3. **kwargs 和 *args

python中函数定义中的args是用于变量输入参数列表的语法。

它与单个星号一起使用。

也就是说,如果我们需要为函数输入任意数量的参数,那么我们使用 *args。例如让我们看一个例子

def myFun(*args):
    for arg in args:
        print(arg)
 
 
myFun("Hello","There","Hi","There")

所以在这里我们可以给出任意数量的参数,*args 将占用所有参数。我们可以认为所有参数都被 arg 保存为某个列表,因此使用 args 中的 arg 行,我们从列表中获取每个元素。

* 将列表拆分为元素,因此 *args 分别给出所有元素,而 args 将以列表形式给出元素。

所以如果你运行上面的代码,你会得到

参数

Python 中函数定义中的kwargs用于关键字、变量参数列表。

它与双星号一起使用。

也就是说,例如,如果我们需要为函数输入任意数量的参数(关键字),那么我们使用 **kwargs。例如。让我们看一个例子,然后您会更清楚地了解关键字的确切含义

def myFun(**kwargs):
    for item,price in kwargs.items():
        print(f"{item}={price}")
 
myFun(Book=100,Pen=10,Watch=4000)

正如您在上面的示例中看到的,我们能够传递完整的值。使用赋值运算符获得变量名和这些变量所保存的值。

我们可以认为参数被kwargs 保存为 Python 字典,因此通过使用 kwargs.items() 中的项目、价格行,我们将获取该项目(书、笔等)及其相应的价格 100,10 等)。

** 将字典分割成它的元素。因此 **kwargs 分别为您提供所有关键字元素,而 kwargs 为您提供字典形式的关键字元素。

克瓦格斯

在 Django path() 中,如果我们需要将更多信息与 URL 路由一起发送到视图,我们可以使用 kwargs。

例如

path('name/<int:id>',views.name_id,{"foo":"bar"})

通过使用URL name/25,Django将调用views.name_id( request, id = 25, foo =’bar’)。

3.姓名

名称用于指定 URL 链接的特定视图的名称。

2. 包含(模块,命名空间=无)

此函数采用另一个 URL conf 文件,该文件应通过使用此包含函数来包含。也就是说,要与另一个urls.py 文件形成链接,您应该使用 include 函数。命名空间也可以写在里面,但我们现在不需要这样做。


如何将 URL 映射到 Django 中的视图?

应用程序/urls.py

这里我们使用 path() 函数和上面学到的语法:

path(‘ ’, sayHello, name = ‘sayHello’)

这里sayHello是views.py中基于函数的视图名称。我们将路径保留为空白字符串,以便我们可以直接访问基本目录上的视图 –在我的例子中为http://127.0.0.1:8000/ 。

Django 项目中的 URL 映射

项目/urls.py

path ()函数将 URL 链接 应用程序中存在的urls.py 文件。因此,我们需要使用上面学到的语法的include()函数。

例如,这里我们使用:

path(‘sayHello/’,include(‘HellpWorldApp.urls’))

除了 路径和包含函数之外,还有re.path() 和 register_converter()函数,我们在 Python-Django 课程中不会太多使用它们。


注意:在project/urls.py中我们使用:

path(‘sayHello/’, include(HelloWorldApp.urls)),

现在,即使我们在 app/urls.py 中编写 sayHello/在 project/urls.py 中简单地编写“ ”,行为也会是相同的。

这是一个示例实现:

应用程序/urls.py:

path(‘sayHello/’, sayHello, name = ‘sayHello’)

项目/urls.py:

path(‘ ’, include(HelloWorldApp.urls))

对于多个View,建议使用这种新方式。因此,从现在开始,我们将在 apps/urls.py 中保留端点,并在 project/urls.py 中保留“ ”(主机网站链接)。

因此,我们现在可以更改它们,如下图所示。

应用程序/urls.py
项目/urls.py

现在我们了解了路径并包含函数,让我们移动一个来创建多个视图并将它们链接到不同的端点。


Django URL 映射多个视图

正如我们在hello world 文章中所做的那样,我们将在views.py 中再添加一个视图

让我们创建一个视图 Book。添加代码:

def Books(request):
    return HttpResponse("This is a books webpage")
视图.py(书籍)

对于较新的视图,我们需要创建另一个端点。因此,在apps/urls.py中,我们只需为端点“Books/”添加另一个路径

path('Books/', Books,name='Books'),
应用程序/urls.py

现在让我们运行服务器并检查浏览器。

运行服务器
浏览书籍/

URL 映射 –可变端点

让我们创建一个视图,它接受图书 ID 作为请求,然后简单地返回给我们 ID 的行。 

在views.py中,让我们创建另一个具有像‘Books/<number>’这样的端点的视图。

def BookID(request,bookid):
    return HttpResponse(f"The book Id is:{bookid}")

在这里,我们只是将图书 ID 与请求一起获取,然后我们将返回特定于该特定图书的响应。

Views.py(BookID)

现在我们必须在 apps/urls.py 中添加端点

path('Books/<int:bookid>', BookID, name='BookID'),
应用程序/urls.py

这里我们不得不提到使用<int: bookid>所示的语法

让我们运行并检查

运行服务器

现在让我们运行浏览器并访问127.0.0.1:8000/Books/1

浏览器1

我们还可以检查任何其他随机图书 ID。

浏览器 23

我们可以看到我们的网页正在运行。因此,我们现在可以使用上面的知识将任何视图URL进行映射。

结论

这就是我们的结论。现在,是时候写下一篇文章了,其中讨论了 Django 视图以及更多关于我们在views.py中实际所做的事情。请继续关注  未来几天有关Python Django 和 Flask的更多文章!