Django 2.0 中的正则表达式 re_path

regex in django 2.0 re_path

我对 python 和 Django 还很陌生,如果这个问题看起来太简单了,请原谅。

我一直在尝试在 CreateView 中使用它,但它不起作用:

re_path(r'^<str:pk>/$', indexView.as_view(), name='index'),

谁能告诉我为什么,以及如何解决这个问题?

你做错了,你使用的是需要正则表达式的 re_path,在这种情况下你应该在这里使用 path。而且你应该使用 slug 类型而不是 str.

path('<slug:pk>/', indexView.as_view() ,name = 'index'),

但是如果你仍然想使用,re_path你必须使用正则表达式。

re_path(r'^(?P<slug>\w+)/$', indexView.as_view() ,name = 'index'),

您可以关注django docs here.

您混淆了正则表达式 (re_path()) 和转换器 (path()) 语法。假设你的 pk 是一个整数,你应该使用:

path('<int:pk>/', indexView.as_view(), name='index'),

re_path(r'^(?P<pk>[0-9]+)/$', indexView.as_view(), name='index'),