As we have seen in our previous post “Developing REST API using functions in DRF application views” we defined two URL’s, http://127.0.0.1/users https://127.0.0.1/user/user_primary_key => example : http://127.0.0.1/user/2 The first URL, “http://127.0.0.1/users” is mapped with view in url.py with urlpattern and in view.py as function “users” as, urlpatterns = [ path('users/', views.users), ] @csrf_exempt def users(request): if request.method == 'GET': users = UserInfo.objects.all() serializer = UserInfoSerializer(users, many=True) return JsonResponse(serializer.data, safe=False) The second URL, http://127.0.0.1/user/2 , where 2 is the primary key of the objects is mapped with urlpatterns in url.py as, urlpatterns = [ path('user/<int:pk>/', views.user), ] and this url is mapped with view.py function “user” as, @csrf_exempt def user(request, pk): if request.method == 'GET': users = UserInfo.objects.filter(pk=pk) serializer = UserInfoSerializer(users, many=True) return JsonResponse(serializer.data, safe=False) Now, below we will try to list few more url patterns which can be defined if we want to use the different url for accessing the information from server. 3. http://127.0.0.1/user_by_uuid/UUID => example … http://127.0.0.1/user_by_uuid/ecbba534-e23b-11ea-96a2-0744224669b7 If we have following JSON, where user_id needs to be UUID, { "id": 5, "userid": "ecbba534-e23b-11ea-96a2-0744224669b7", "username": "lynxbee1", "email": "social(at)lynxbee.com", "age": "41" } then he URL to GET information of user id “ecbba534-e23b-11ea-96a2-0744224669b7” can be accessed using URL http://127.0.0.1/user/ecbba534-e23b-11ea-96a2-0744224669b7 and this can be mapped with urlpatterns as, urlpatterns = [ path('user/<uuid:user_id>/', views.user), ] The related view.py function will be, @csrf_exempt def user(request, user_id): if request.method == 'GET': users = UserInfo.objects.filter(userid=user_id) serializer = UserInfoSerializer(users, many=True) return JsonResponse(serializer.data, safe=False) 4.
Command line execution
sed using URL http://127.0.0.1/user/ecbba534-e23b-11ea-96a2-0744224669b7 and this can be mapped with urlpatterns as, urlpatterns = [ path('user/<uuid:user_id>/', views.user), ] The related view.py function will be, @csrf_exempt def user(request, user_id): if request.method == 'GET': users = UserInfo.objects.filter(userid=user_id) serializer = UserInfoSerializer(users, many=True) return JsonResponse(serializer.data, safe=False) 4. http://127.0.0.1/user_by_name/username_as_string => example … http://127.0.0.1/user/lynxbee1 This uses the same JSON as above for example, then url.py needs to defined as, urlpatterns = [ path('user/<str:user_name>/', views.user_by_name), ] and related views.py function needs to defined as, @csrf_exempt def user_by_name(request, user_name): if request.method == 'GET': users = UserInfo.objects.filter(username=user_name) serializer = UserInfoSerializer(users, many=True) return JsonResponse(serializer.data, safe=False) 5. http://127.0.0.1/user/slug => example : http://127.0.0.1/user/show-the-userinformation Django urlpattern also supports using complete “slug” to access the views.. hence for example, if we want to design a page and access it using url “http://127.0.0.1/user/show-the-userinformation” then we need to define urlpatten in url.py as, urlpatterns = [ path('user/<slug:custom_slug>', views.index_slug), ] And is respective implementation in views.py as, @csrf_exempt def index_slug(request, custom_slug): return HttpResponse("This page accessed using Slug : " + custom_slug) 6. Accessing index page http://127.0.0.1/user/ For designing index page which may give some generic information about user API, we need to modify urlpattern as, urlpatterns = [ path('user/', views.index), ] and its respective views.py implementation as, @csrf_exempt def index(request): return HttpResponse("This is Index page of user") References – https://docs.djangoproject.com/en/3.1/topics/http/urls/ https://docs.djangoproject.com/en/3.1/ref/urls/ https://docs.djangoproject.com/en/3.1/topics/http/urls/#how-django-processes-a-requestImplementation details
http://127.0.0.1/user_by_name/username_as_string => example … http://127.0.0.1/user/lynxbee1 This uses the same JSON as above for example, then url.py needs to defined as, urlpatterns = [ path('user/<str:user_name>/', views.user_by_name), ] and related views.py function needs to defined as, @csrf_exempt def user_by_name(request, user_name): if request.method == 'GET': users = UserInfo.objects.filter(username=user_name) serializer = UserInfoSerializer(users, many=True) return JsonResponse(serializer.data, safe=False) 5. http://127.0.0.1/user/slug => example : http://127.0.0.1/user/show-the-userinformation Django urlpattern also supports using complete “slug” to access the views.. hence for example, if we want to design a page and access it using url “http://127.0.0.1/user/show-the-userinformation” then we need to define urlpatten in url.py as, urlpatterns = [ path('user/<slug:custom_slug>', views.index_slug), ] And is respective implementation in views.py as, @csrf_exempt def index_slug(request, custom_slug): return HttpResponse("This page accessed using Slug : " + custom_slug) 6. Accessing index page http://127.0.0.1/user/ For designing index page which may give some generic information about user API, we need to modify urlpattern as, urlpatterns = [ path('user/', views.index), ] and its respective views.py implementation as, @csrf_exempt def index(request): return HttpResponse("This is Index page of user") References – https://docs.djangoproject.com/en/3.1/topics/http/urls/ https://docs.djangoproject.com/en/3.1/ref/urls/ https://docs.djangoproject.com/en/3.1/topics/http/urls/#how-django-processes-a-request
Gotchas and common issues
Permission checks - verify user access rights and sudo privileges before executing system-level operations.
Environment configuration - double-check path variables and dependency versions to prevent runtime failures.
Backup safeguards - maintain configuration backups before applying system or database modifications.
Following these steps ensures clean configuration and reliable execution for define different urlpatterns in view.py for django.
Comments and corrections