Typically when you create a new django project, you get files like settings.py, urls.py, wsgi.py and similar. These files help you build projects with best practices and similar.
But for testing purposes, I want to create the most minimal Django project possible.
I have already installed django, so the first task now is to create a new file called small.py. We need to set three constants and add an empty urlpatterns list:
DEBUG = True SECRET_KEY = 'this.must.be.secure' ROOT_URLCONF = __name__ urlpatterns = 
Let's try to run this project now:
django-admin runserver --pythonpath=. --settings=small
So the "pythonpath" variable here points to the Python instance in your computer or environment. The "settings" variable points to the "small.py" file we just created.
Okay, at least we now see the default django welcome page. Let's make it possible to add a view, and render some html.
from django.http import HttpResponse from django.urls import path DEBUG = True SECRET_KEY = 'thismustbesecure' ROOT_URLCONF = __name__ def index(request): return HttpResponse('<p>A really small Django project</p>') urlpatterns = [ path('', index), ]
If we run it again now, we will see the paragraph we added. So there you have it, a django project with only 1 file and 13 lines of code.
We can also make it possible to use the "python small.py run server" command by doing some changes.
import sys from django.conf import settings from django.core.management import execute_from_command_line from django.http import HttpResponse from django.urls import path settings.configure( DEBUG=True, SECRET_KEY='thismustbesecure', ROOT_URLCONF=__name__, ) def index(request): return HttpResponse('<p>A 22 lines Django project</p>') urlpatterns = [ path('', index), ] if __name__ == '__main__': execute_from_command_line(sys.argv)
Now, you should be able to run the project by running this command:
python small.py runserver