2.0以降、djanoはURLパスでキャプチャされた値を使用します。
urlpatterns = [
path('articles/2003/', views.special_case_2003),
path('articles/<int:year>/', views.year_archive),
]
もちろん、組み込みのパスコンバーター(、、、、、)が十分に具体的でない場合でも、正規表現を使用できstr
ますint
。URLセーフのBase64エンコーディングの場合、slugは一致する可能性がありますが、必要に応じて、独自に定義できます。slug
uuid
path
.
=
~
convertors.py
class b64Converter:
# decide on complexity of your b64 regex by
# referring to https://stackoverflow.com/a/475217
regex = 'define_your_regex here'
def to_python(self, value):
return base64.urlsafe_b64decode(value)
def to_url(self, value):
return base64.urlsafe_b64encode(value)
次にurls.py:
from django.urls import path, register_converter
from . import converters, views
register_converter(converters.b64Convertor, 'b64')
urlpatterns = [
path('widgets/<b64:my_url_param>/', views.widgetview),
...
]