Skip to content

Latest commit

 

History

History
212 lines (205 loc) · 9.78 KB

README.md

File metadata and controls

212 lines (205 loc) · 9.78 KB

django-path-converters

An underestimated part of Django is its path converters: a way to define a certain pattern for a URL once, together with mapping functions from and to that pattern.

These can then be plugged in into the URL paths one defines, and thus makes querying more convenient. The pattern can also often be defined more restricted, since the work to define a pattern is done once, and is thus not very cumbersome.

This package aims to provide some general purpose path converters. Probably the most sophisticated one are lazy model object loads: these will not evaluate an object, unless it is necessary, and thus therefore could save some queries.

Overview of the defined path converters

name to_types examples regex from_types
<auth.group:…> <class 'django.contrib.auth.models.Group'> [0-9]+ <class 'django.contrib.auth.models.Group'>
<auth.group.id:…> <class 'django.contrib.auth.models.Group'> [0-9]+ <class 'django.contrib.auth.models.Group'>
<auth.group.name:…> <class 'django.contrib.auth.models.Group'> [^/]+ <class 'django.contrib.auth.models.Group'>
<auth.permission:…> <class 'django.contrib.auth.models.Permission'> [0-9]+ <class 'django.contrib.auth.models.Permission'>
<auth.permission.id:…> <class 'django.contrib.auth.models.Permission'> [0-9]+ <class 'django.contrib.auth.models.Permission'>
<auth.user:…> <class 'django.contrib.auth.models.User'> [0-9]+ <class 'django.contrib.auth.models.User'>
<auth.user.id:…> <class 'django.contrib.auth.models.User'> [0-9]+ <class 'django.contrib.auth.models.User'>
<auth.user.username:…> <class 'django.contrib.auth.models.User'> [^/]+ <class 'django.contrib.auth.models.User'>
<autoslug:…> <class 'str'> this-is-a-slug
slugifying-this-str
[-a-zA-Z0-9_]+ <class 'str'>
<class 'django.db.models.base.Model'>
<autoslugunicode:…> <class 'str'> this-is-a-slug
slugifying-this-str
[-a-zA-Z0-9_]+ <class 'str'>
<class 'django.db.models.base.Model'>
<bool:…> <class 'bool'> True
False
1
0
T
F
on
oFF
yes
NO
[Yy]([Ee][Ss])?|[Tt]([Rr][Uu][Ee])?|[Oo][Nn]|1|[Ff]([Aa][Ll][Ss][Ee])?|[Nn][Oo]?|[Oo][Ff][Ff]|0 <class 'object'>
<contenttype:…> <class 'django.contrib.contenttypes.models.ContentType'> [0-9]+ <class 'django.contrib.contenttypes.models.ContentType'>
<contenttype.id:…> <class 'django.contrib.contenttypes.models.ContentType'> [0-9]+ <class 'django.contrib.contenttypes.models.ContentType'>
<contenttypes.contenttype:…> <class 'django.contrib.contenttypes.models.ContentType'> [0-9]+ <class 'django.contrib.contenttypes.models.ContentType'>
<contenttypes.contenttype.id:…> <class 'django.contrib.contenttypes.models.ContentType'> [0-9]+ <class 'django.contrib.contenttypes.models.ContentType'>
<date:…> <class 'datetime.date'> 2023-01-21 [0-9]{4}[-](?:0?[1-9]|1[0-2])-(?:0?[1-9]|[12][0-9]|3[01]) <class 'datetime.datetime'>
<class 'datetime.date'>
<daterange:…> <class 'django_path_converters.converters.daterange'> 1958-3-25/2019-11-25 (?P<from_date>[0-9]{4}[-](?:0?[1-9]|1[0-2])-(?:0?[1-9]|[12][0-9]|3[01]))/(?P<to_date>[0-9]{4}[-](?:0?[1-9]|1[0-2])-(?:0?[1-9]|[12][0-9]|3[01])) typing.Iterable
<datetime:…> <class 'datetime.datetime'> 2023-01-24T19:21:18Z
2023-01-24T19:21:18+00:00
2023-01-24T19:47:58
[0-9]{4}[-](?:0?[1-9]|1[0-2])-(?:0?[1-9]|[12][0-9]|3[01])T(?:[0-1]\d|2[0-4])[:]?[0-5][0-9][:]?[0-5][0-9](?:Z|[+-](?:[0-1]\d|2[0-4])[:]?[0-5][0-9])? <class 'datetime.datetime'>
<class 'datetime.date'>
<django_path_converters.group:…> <class 'django_path_converters.models.Group'> [0-9]+ <class 'django_path_converters.models.Group'>
<django_path_converters.group.id:…> <class 'django_path_converters.models.Group'> [0-9]+ <class 'django_path_converters.models.Group'>
<django_path_converters.group.level:…> <class 'django_path_converters.models.Group'> -12
14
25
[+-]?[0-9]+ <class 'django_path_converters.models.Group'>
<eager_auth.group:…> <class 'django.contrib.auth.models.Group'> [0-9]+ <class 'django.contrib.auth.models.Group'>
<eager_auth.group.id:…> <class 'django.contrib.auth.models.Group'> [0-9]+ <class 'django.contrib.auth.models.Group'>
<eager_auth.group.name:…> <class 'django.contrib.auth.models.Group'> [^/]+ <class 'django.contrib.auth.models.Group'>
<eager_auth.permission:…> <class 'django.contrib.auth.models.Permission'> [0-9]+ <class 'django.contrib.auth.models.Permission'>
<eager_auth.permission.id:…> <class 'django.contrib.auth.models.Permission'> [0-9]+ <class 'django.contrib.auth.models.Permission'>