Недопустимая синтаксическая ошибка в URLS.py в DJango - PullRequest
0 голосов
/ 24 мая 2018

Получение следующей ошибки в моем 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)

]

1 Ответ

0 голосов
/ 24 мая 2018

Вы определили строку с префиксом re'..'.Но у Python нет префикса re'..'.

Он имеет префикс r'..', и это не означает "регулярное выражение", но "raw ", не означает, что вы создали регулярное выражение, но более того, что если вы напишите, например, r'foo\nbar', вы не написали новую строку символ ('\n'), но вы пишете обратную косую черту r'\' (или '\\' для обычной строки), за которой следует символ 'n'.Это необходимо, поскольку, если вы создаете регулярное выражение, обратные слэши должны по-прежнему состоять из отдельных символов.

Таким образом, вы можете переписать его следующим образом:

urlpatterns = [
    # r instead of re
    re_path(<b>r</b>'^details/(?P\d+)/$', views.details),
    path('', views.index)
]

Python также имеет f'..' строк (чтоможет содержать переменные, которые затем форматируются), и b'..' строки (для двоичных строк), но они не имеют большого значения в случае urlpatterns.

Таким образом, вы не per se нужно использовать префикс r'..' вообще.Но в этом случае вы должны убедиться, что вы избежали обратной косой черты.Это затрудняет написание и чтение.Поэтому r'..', вероятно, лучший способ написания регулярных выражений.

...