我正在学习Django的一些天,我觉得压倒了斜线使用在url模式,如
path(“login”,login,name='login')
有时候我们在开头使用斜杠,有时候在结尾使用斜杠,有时候我们在两边都使用斜杠,就像这样**(/login,login/,/login/**).这真的很令人困惑问题= 1-这些斜线是什么,它在我的模式中有什么作用2 -什么时候我应该使用斜线-在开始,在结束还是在两边我不知道什么时候在url模式中使用这些斜杠,所以请指导我
dkqlctbz1#
这取决于你想要什么样的路线。让我们举个例子。请记住,我们有一个Django,它有两个应用程序,分别名为main_app和API_app。现在我们要定义路由以找出差异。我的项目/urls.app
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('api/', include('api_app.urls')), path('landing', include('main_app.urls')), ]
第一个url admin/被定义为Django管理面板的默认值。它在末尾包含/,因为在此之后还有其他路由。比如/admin/auth/user/第二个URL是相同的。请记住,我们的API_app中有一些路由。API_app/urls.py
admin/
/
/admin/auth/user/
from api_app.views import * from django.urls import path app_name = 'api_app' urlpatterns = [ path('info', info.as_view()), ]
所以在这个例子中,我们定义了一个路由api/info。现在,如果我们从my_project/urls.app中定义的api/的末尾删除/,我们的url将是apiinfo。(我们可以从api/的末尾删除/,并将其添加到info的开始以获得相同的路由)最后一个landing是当我们没有任何包含URL时。有关详细信息,请阅读this article
api/info
my_project/urls.app
api/
apiinfo
info
landing
pod7payv2#
Django URL模式中的斜杠用于定义URL的结构。它们充当URL不同部分之间的分隔符。字符串“login”是将匹配的URL模式或路由。在本例中,它是字符串“login”,这意味着它将匹配URL http://example.com/login。Login是与URL模式相关联的视图函数或基于类的视图。当URL模式匹配时,Django将调用此函数或基于类的视图来处理请求并生成响应。使用name ='login'是一个可选参数,它为该URL模式提供了一个名称。它允许您在Django应用程序的其他部分(例如模板或其他URL)中通过其名称引用此URL模式。例如,您可以使用{% url %}模板标记或reverse()函数使用名称动态生成URL。如果要匹配以“example 1/”结尾的URL,则应使用('example 1/')。这意味着URL可以包含“example 1/”之外的其他内容或页面。结尾的斜杠表示该URL中可能有更多内容需要探索。例如,假设你有一个博客网站。您可以使用模式('example 1/')来定义博客主页的URL。因此,当用户访问“https://www.example.com/example1/”时,Django将识别出他们正在访问主博客页面。此模式表明在此URL下可能有更多可用的页面或博客文章,例如“https://www.example.com/example1/post1/”、“https://www.example.com/example1/post2/”等。结尾的斜杠表示可以在该URL中找到其他内容或子页面。当您执行('/example 2/')时,它表示绝对URL路径。当您希望指定精确的URL路径而不考虑当前URL或目录结构时,此模式非常有用。它覆盖当前URL路径并将其替换为“example 2/”路径。例如,如果您在http://www.example.com/house/上,它会将您当前所在的url路径“house”替换为“example 2”。模式(/example 3 ')表示一个独立的特定URL,没有任何其他页面或内容与之关联。假设您的网站有一个“关于”页面。您可以将URL模式定义为('/example 3')。当用户访问“https://www.example.com/example3”时,Django会识别出他们正在访问“About”页面。此模式表示此URL表示一个自包含的页面,没有任何子页面或其他内容。模式('example 4')没有任何斜杠。当您希望捕获URL中的特定字符串或参数以进行进一步处理时,将使用此选项。此模式允许您处理动态值或基于捕获的值自定义行为。示例:假设您有一个具有不同类别的电子商务网站。您可以将URL模式定义为('example 4'),并将类别捕获为参数。例如,当用户访问“https://www.example.com/category/electronics/”时,Django将使用模式('example 4')匹配该URL并捕获值“electronics”。然后,您可以使用此捕获的值来显示特定的产品或根据类别以不同的方式处理请求。
{% url %}
reverse()
2条答案
按热度按时间dkqlctbz1#
这取决于你想要什么样的路线。让我们举个例子。请记住,我们有一个Django,它有两个应用程序,分别名为main_app和API_app。现在我们要定义路由以找出差异。
我的项目/urls.app
第一个url
admin/
被定义为Django管理面板的默认值。它在末尾包含/
,因为在此之后还有其他路由。比如/admin/auth/user/
第二个URL是相同的。请记住,我们的API_app中有一些路由。API_app/urls.py
所以在这个例子中,我们定义了一个路由
api/info
。现在,如果我们从my_project/urls.app
中定义的api/
的末尾删除/
,我们的url将是apiinfo
。(我们可以从api/
的末尾删除/
,并将其添加到info
的开始以获得相同的路由)最后一个
landing
是当我们没有任何包含URL时。有关详细信息,请阅读this article
pod7payv2#
Django URL模式中的斜杠用于定义URL的结构。它们充当URL不同部分之间的分隔符。
字符串“login”是将匹配的URL模式或路由。在本例中,它是字符串“login”,这意味着它将匹配URL http://example.com/login。
Login是与URL模式相关联的视图函数或基于类的视图。当URL模式匹配时,Django将调用此函数或基于类的视图来处理请求并生成响应。
使用name ='login'是一个可选参数,它为该URL模式提供了一个名称。它允许您在Django应用程序的其他部分(例如模板或其他URL)中通过其名称引用此URL模式。例如,您可以使用
{% url %}
模板标记或reverse()
函数使用名称动态生成URL。如果要匹配以“example 1/”结尾的URL,则应使用('example 1/')。这意味着URL可以包含“example 1/”之外的其他内容或页面。结尾的斜杠表示该URL中可能有更多内容需要探索。例如,假设你有一个博客网站。您可以使用模式('example 1/')来定义博客主页的URL。因此,当用户访问“https://www.example.com/example1/”时,Django将识别出他们正在访问主博客页面。此模式表明在此URL下可能有更多可用的页面或博客文章,例如“https://www.example.com/example1/post1/”、“https://www.example.com/example1/post2/”等。结尾的斜杠表示可以在该URL中找到其他内容或子页面。
当您执行('/example 2/')时,它表示绝对URL路径。当您希望指定精确的URL路径而不考虑当前URL或目录结构时,此模式非常有用。它覆盖当前URL路径并将其替换为“example 2/”路径。例如,如果您在http://www.example.com/house/上,它会将您当前所在的url路径“house”替换为“example 2”。
模式(/example 3 ')表示一个独立的特定URL,没有任何其他页面或内容与之关联。假设您的网站有一个“关于”页面。您可以将URL模式定义为('/example 3')。当用户访问“https://www.example.com/example3”时,Django会识别出他们正在访问“About”页面。此模式表示此URL表示一个自包含的页面,没有任何子页面或其他内容。
模式('example 4')没有任何斜杠。当您希望捕获URL中的特定字符串或参数以进行进一步处理时,将使用此选项。此模式允许您处理动态值或基于捕获的值自定义行为。
示例:假设您有一个具有不同类别的电子商务网站。您可以将URL模式定义为('example 4'),并将类别捕获为参数。例如,当用户访问“https://www.example.com/category/electronics/”时,Django将使用模式('example 4')匹配该URL并捕获值“electronics”。然后,您可以使用此捕获的值来显示特定的产品或根据类别以不同的方式处理请求。