Django url pattern - string parameter

Depends on what characters you care about. Like the docs say, \w will give you an alphanumeric character or an underscore.


Starting in Django 2.0 it is easier to handle string parameters in URLs with the addition of the slug symbol, which is used just like int in urls.py:

from django.urls import path

urlpatterns = [
    path('something/<slug:foo>', views.slug_test),
]

And in your function-based or class-based view you would handle it just like any other parameter:

def slug_test(request, foo):
    return HttpResponse('Slug parameter is: ' + foo)

for having a string parameter in url you can have: url like this:

url(r'^polls/(?P<string>[\w\-]+)/$','polls.views.detail')

This will even allow the slug strings to pass eg:strings like node-js etc.


In newer versions of Django such as 2.1 you can use

path('polls/<str:poll_id>', views.polls_detail)

as given here Django URL dispatcher

def polls_detail(request,poll_id):
#process your request here