python - 如何使用正则表达式匹配包含横线的字符串?
问题描述
我想在 Django 中使用动态 url 来匹配我在模板中的动态 href,该模板由地址组装而成,如下所示:
../details/0-TIFFANY-CRES ../details/1-机场-PKY
我是正则表达式的外行,我要匹配的当前网址是:
<pre>
path('details/(?P<addline>[-\w]+)/$', details),
</pre>
它没有用(当然)。
另外,我想在我的视图中使用 urls 中的地址,如何将这个地址转换为我的新视图函数?
如何匹配网址?如果有任何不清楚的部分,请告诉我,我会尽力解释更多。
解决方案
您必须在 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>
推荐阅读
- php - 查询已发表产品的作者/用户
- c# - 如何在每个循环中更改 TextBlock.Text?
- python - 带有 requires_grad 参数的 torch.Tensor()
- google-cloud-platform - 关于 message.ack() 和 message.nack() 方法的文档在哪里?
- docker - 在特定目录中创建 docker 镜像
- makefile - 传递变量时抛出“找不到命令”
- c# - c#中1000,000格式的自定义数字组(千位分隔符)
- c# - 按类型查找控件的祖先
- c++ - C++ 异常处理:关于 'try' 块
- angular - 如何在选定对象的自动完成中仅显示特定对象属性而不是Angular 7中的[对象]