您的位置:58脚本 > django urls配置 Django4.0 URL调度器-注册自定义的路径转换器

django urls配置 Django4.0 URL调度器-注册自定义的路径转换器

2023-03-19 23:32 Django4中文教程

django urls配置 Django4.0 URL调度器-注册自定义的路径转换器

django urls配置

Django的URL配置是一个重要的部分,它可以帮助我们更好地管理我们的应用程序。它可以让我们更容易地将URL映射到特定的视图函数,并且可以帮助我们更好地组织和管理URL。

Django URL配置是通过urls.py文件来实现的,这个文件位于项目根目录中。urls.py文件包含了一个Python列表,其中包含了所有要处理的URL。每个URL都有一个正则表达式来匹配请求的URL,并将其映射到特定的视图函数。

from django.conf.urls import url
from myapp import views
 
urlpatterns = [ 
    url(r'^$', views.index, name='index'), 
    url(r'^about/$', views.about, name='about'), 
] 

上面的代码是一个基本的urls.py文件,其中包含了两个URL:一个用于处理根目录请求(/),另一个用于处理/about/请求。对于每一个URL都有一个正则表达式来匹配请求的URL(例如r'^$'和r'^about/$'),并把它映射到特定的视图函数views.index和views.about。

此外,Django还允许使用命名参数来传递参数到视图函数中。例如:

 
from django.conf.urls import url 
from myapp import views 

 urlpatterns = [ 
     url(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive, name='year_archive'),  ]   

上面代码中使用了命名参数year来传递年份信息到views.year_archive()函数中。这样就可以根据不同年份显示不同内容。

总之,Django URL配置是一个重要而强大的工具,能够帮助我们将URL映射到特定的视图函数上去。使用正则表达式和命名参数也能帮助我们很好地处理不同情况和传递不同参数。

Django4.0 URL调度器-注册自定义的路径转换器

对于更复杂的匹配需求,你能定义你自己的路径转换器。

转换器是一个类,包含如下内容:

  • 字符串形式的 ​regex ​类属性。
  • 一个​to_python(self, value)​ 方法,用来处理匹配的字符串转换为传递到函数的类型。如果没有转换为给定的值,它应该会引发 ​ValueError ​。​ValueError ​说明没有匹配成功,因此除非另一个 URL 模式匹配成功,否则会向用户发送404响应。
  • 一个 ​to_url(self, value)​ 方法,它将处理 Python 类型转换为字符串以用于 URL 中。如果不能转换给定的值,它应该引发 ​ValueError​。​ValueError ​被解释为无匹配项,因此 ​reverse()​ 将引发 ​NoReverseMatch​,除非有其他 URL 模式匹配。

例如:

class FourDigitYearConverter:
    regex = "[0-9]{4}"

    def to_python(self, value):
        return int(value)

    def to_url(self, value):
        return "%04d" % value

在 ​URLconf ​中使用 ​register_converter()​ 来注册自定义的转换器类:

from django.urls import path, register_converter

from . import converters, views

register_converter(converters.FourDigitYearConverter, "yyyy")

urlpatterns = [
    path("articles/2003/", views.special_case_2003),
    path("articles/<yyyy:year>/", views.year_archive),
    ...
]


阅读全文
以上是58脚本为你收集整理的django urls配置 Django4.0 URL调度器-注册自定义的路径转换器全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 58脚本 58jiaoben.com 版权所有 联系我们
桂ICP备12005667号-28 Powered by CMS