I’ve been working on a couple of Django sites over the past week, so I went back to browse through my Django books to look things up.
There’s an interesting book called Lightweight Django that shows how to create a minimal Django website with only one file. I wouldn’t build a site this way, but it’s an interesting experiment.
It only takes about 50 lines of code:
import os
import sys
from django.conf import settings
from django.conf.urls import url
from django.core.wsgi import get_wsgi_application
from django.http import HttpResponse
# This loads environment variables from a .env file.
# See the .env-example file for instructions on how to create one.
from dotenv import load_dotenv
load_dotenv()
DEBUG = bool(os.environ.get("DEBUG", False))
SECRET_KEY = os.environ.get("SECRET_KEY")
if not SECRET_KEY:
print("please add a secret key to your .env file")
sys.exit()
ALLOWED_HOSTS = []
settings.configure(
DEBUG=DEBUG,
SECRET_KEY=SECRET_KEY,
ALLOWED_HOSTS=ALLOWED_HOSTS,
ROOT_URLCONF=__name__,
MIDDLEWARE_CLASSES=(
"django.middleware.common.CommonMiddleware",
"django.middleware.csrf.CsrfViewMiddleware",
"django.middleware.clickjacking.XFrameOptionsMiddleware",
),
)
def index(request):
"""This is a Django view that takes a request and sends a response.
A Django "view" is equivalent to a "controller" in some other popular
frameworks.
"""
return HttpResponse("hello world")
# This is the router
urlpatterns = (
url(r"^$", index),
)
application = get_wsgi_application()
if __name__ == "__main__":
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
If anyone is interested, I put some instructions on how to run it in the README on Github:
I’ve also been reading through some sections of Pro Django which is useful.