在我的urls.py中收到以下错误
Django/Projects/first_project/simple_app/urls.py", line 7
re_path(re'^details/(?P<id>\d+)/$', views.details),
^
SyntaxError: invalid syntax
urls.py如下:
from django.contrib import admin
from django.urls import path, re_path, include
from . import views
urlpatterns = [
re_path(re'^details/(?P<id>\d+)/$', views.details),
path('', views.index)
]
答案 0 :(得分:2)
您定义了一个带有re'..'
前缀的字符串。但是Python没有re'..'
前缀。
它有一个r'..'
前缀,而这不意味着&#34;正则表达式&#34;,但是&#34; raw &#34 ;。它不意味着你构造一个正则表达式,但更多的是,如果你编写例如r'foo\nbar'
,你做不写一个新行字符('\n'
),但您为一个常规字符串写了一个反斜杠r'\'
(或'\\'
)后跟一个'n'
字符。这是必要的,因为如果你构造一个正则表达式,反斜杠应该仍然是单独的字符。
您可以将其重写为:
urlpatterns = [
# r instead of re
re_path(r'^details/(?P\d+)/$', views.details),
path('', views.index)
]
Python还有f'..'
个字符串(可以包含随后被格式化的变量)和b'..'
个字符串(用于二进制字符串),但在{{1}的情况下这些并不重要}。
因此,您本身根本不需要使用urlpatterns
前缀。但在这种情况下,你必须确保自己逃避反斜杠。这使得写入和阅读更加困难。因此r'..'
可能是编写正则表达式的最佳方法。