web-dev-qa-db-ja.com

正規表現Django URLトークンをオプションにする

Djangoでfirst_nameおよびlast_nameを受け入れるURLがあります。

('^(?P<first_name>[a-zA-Z]+)/(?P<last_name>[a-zA-Z]+)/$','some_method'),

新しい行を作成せずに、titleのオプションのURLトークンをどのように含めますか。これが私が意味することは、理想的なシナリオでは:

#A regex constant
OP_REGEX = r'THIS IS OPTIONAL<title>[a-z]'
#Ideal URL
('^(?P<first_name>[a-zA-Z]+)/(?P<last_name>[a-zA-Z]+)/OP_REGEX/$','some_method'),

これは新しい行を作成せずに可能ですか?.

('^(?P<first_name>[a-zA-Z]+)/(?P<last_name>[a-zA-Z]+)/(?P<title>[a-zA-Z]+)/$','some_method'),
46
Federer
('^(?P<first_name>[a-zA-Z]+)/(?P<last_name>[a-zA-Z]+)(?:/(?P<title>[a-zA-Z]+))?/$','some_method'),

ビューでtitleにデフォルト値を指定することを忘れないでください。

必要な引数なしで複数のオプションの引数を探している場合は、次のように最初の "/"を省略します。

re_path(r'^view(?:/(?P<dummy1>[a-zA-Z]+))?(?:/(?P<dummy2>[a-zA-Z]+))?(?:/(?P<dummy3>[a-zA-Z]+))?/$', views.MyView.as_view(), name='myname'),

あなたが閲覧することができます:

http://localhost:8000/view/?dummy1=value1&dummy2=value2&dummy3=value3
0
Rexcirus