This post is in continuation with our previous post “Starting webserver using your first simple Django project” , where we showed how we can start the webserver. Now, as we have the webserver running, lets see how we can start an application which will serve the custom built usecase over this webserver. $ cd django_container Your apps can live anywhere on your  Python path .

Command line execution

Terminalbash
python manage.py startapp my_helloworld_django_app As we created the app, we can see it got created beside our project “my_django_project” in same directory “django_container” $ ls db.sqlite3  env  manage.py  my_django_project  my_helloworld_django_app $ tree my_helloworld_django_app/ my_helloworld_django_app/ ├── admin.py ├── apps.py ├── __init__.py ├── migrations │ └── __init__.py ├── models.py ├── tests.py └── views.py As we start writing our first application, the first thing we need to do is to design how we want to show it to the end user, this design needs to be done in our applications views. ( i.e. my_helloworld_django_app/views.py in this example ) Write the app views $ vim my_helloworld_django_app/views.py from django.http import HttpResponse def index(request):     return HttpResponse("Hello, world from Django First App!") here, in our first django app, we intend to just show some string “Hello, world from Django First App” as http response when someone visits url in the server. i.e. it will be a http request. Link the app views to app urls Now, we need to link the views we created for the app to the app’s urls, so that the urls gets redirected to appropriate views. In our example, app’s url file is “my_helloworld_django_app/urls.py” . Since this file was not created by default for app, we need to create it, $ vim my_helloworld_django_app/urls.py from django.urls import path from . import views urlpatterns = [     path('', views.index, name='index'), ] As we can see above “from . import views” using this line, we imported the views i.e. view.py from the current directory i.e. app directory. and using the line “path(”, views.index, name=’index’)” we mapped this url to views index function. The  path()  function is passed four arguments, two required:  route  and  view , and two optional:  kwargs , and  name . At this point, it’s worth reviewing what these arguments are for. path()  argument:  route ¶ route  is a string that contains a URL pattern. When processing a request, Django starts at the first pattern in  urlpatterns  and makes its way down the list, comparing the requested URL against each pattern until it finds one that matches. Patterns don’t search GET and POST parameters, or the domain name. For example, in a request to  https://www.example.com/myapp/ , the URLconf will look for  myapp/ . In a request to  https://www.example.com/myapp/?page=3 , the URLconf will also look for  myapp/ . path()  argument:  view ¶ When Django finds a matching pattern, it calls the specified view function with an  HttpRequest  object as the first argument and any “captured” values from the route as keyword arguments. We’ll give an example of this in a bit. Mapping project urls to App urls Now, we are ready to map the projects urls to the app’s url. So that when ever the user visits the url, which is directly linked to project’s url, internally its goes on to refer app’s urls and then present the views mapped to app’s url. $ vim my_django_project/urls.py from django.urls import include, path urlpatterns = [     path('helloworld/', include('my_helloworld_django_app.urls')), ] Here, we mapped, the “helloworld” url i.e. http://127.0.0.1:8000/helloworld to “my_helloworld_django_app” app’s “urls.py” using below line, path('helloworld/', include('my_helloworld_django_app.urls'))  $ python manage.py runserver Now, if you visit the url http://127.0.0.1:8000/helloworld , you should see the web page with message as “Hello, world from Django First App!”

Implementation details

In this post, we’ll create our helloworld app in the same directory as your  manage.py  file so that it can be imported as its own top-level module, rather than a submodule of project. $ python manage.py startapp my_helloworld_django_app As we created the app, we can see it got created beside our project “my_django_project” in same directory “django_container” $ ls db.sqlite3 env manage.py my_django_project my_helloworld_django_app $ tree my_helloworld_django_app/ my_helloworld_django_app/ ├── admin.py ├── apps.py ├── __init__.py ├── migrations │ └── __init__.py ├── models.py ├── tests.py └── views.py As we start writing our first application, the first thing we need to do is to design how we want to show it to the end user, this design needs to be done in our applications views. ( i.e. my_helloworld_django_app/views.py in this example ) Write the app views $ vim my_helloworld_django_app/views.py from django.http import HttpResponse def index(request): return HttpResponse("Hello, world from Django First App!") here, in our first django app, we intend to just show some string “Hello, world from Django First App” as http response when someone visits url in the server. i.e.

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 writing first django application.