Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Django url path regex: capturing multiple values from url

How do I capture multiple values from a URL in Django?

Conditions: I would like to capture ids from a URL. The ids vary in length (consist of numbers only), and there can be multiple ids in the URL. Check out the following two examples:

http://127.0.0.1:8000/library/check?id=53&id=1234

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

http://127.0.0.1:8000/library/check?id=4654789&id=54777&id=44

The solution may include regex.

urlpatterns = [
    path("", view=my_view),
    path("<solution_comes_here>", view=check_view, name="check_view"),
]

P.S. all solutions I found on this platform and Django documentation only explain cases for capturing single values from the URL

>Solution :

You use:

urlpatterns = [
    path('', view=my_view),
    path('check/', view=check_view, name='check_view'),
]

Indeed, the querystring is not part of the path. This can be determined with request.GET. So you can obtain the ids with:

def check_view(request):
    ids = request.GET.getlist('id')  # ['3654789', '54777', '44']
    # …

There is however no guarantee that the ids will only be numerical, so you will need to validate that in the view itself.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading