首页 > 解决方案 > 如何使用正则表达式匹配包含横线的字符串?

问题描述

我想在 Django 中使用动态 url 来匹配我在模板中的动态 href,该模板由地址组装而成,如下所示:

../details/0-TIFFANY-CRES
../details/1-机场-PKY

我是正则表达式的外行,我要匹配的当前网址是:

<pre>

    path('details/(?P<addline>[-\w]+)/$', details),

</pre>

它没有用(当然)。

另外,我想在我的视图中使用 urls 中的地址,如何将这个地址转换为我的新视图函数?

如何匹配网址?如果有任何不清楚的部分,请告诉我,我会尽力解释更多。

标签: pythondjango

解决方案


您必须在 Django 2.0 中为正则表达式导入模块,例如:

from django.urls import path, re_path

from . import views

urlpatterns = [
    path('articles/2003/', views.special_case_2003),
    re_path(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive),
    re_path(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$', views.month_archive),
    re_path(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<slug>[\w-]+)/$', views.article_detail),
]

更多信息

新地址将是您分配的函数或类的名称,在您的情况下path('details/[-\w]', details), details是函数,您可以re_path(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive),在此示例中获取具有分配给正则表达式组的名称的参数,正则表达式组名称是?P<year>


推荐阅读