import os import time from django.db import connections from django.http import FileResponse from django.shortcuts import render from django.template.response import TemplateResponse from testapp.models import Lawn def index(request): return TemplateResponse(request, "index.html", {}) def help(request): # render does not instantiate a TemplateResponse, so it does not # increment the "by_templatename" counters. return render(request, "help.html", {}) def slow(request): """This view takes .1s to load, on purpose.""" time.sleep(0.1) return TemplateResponse(request, "slow.html", {}) def newlawn(request, location): """This view creates a new Lawn instance in the database.""" lawn = Lawn() lawn.location = location lawn.save() return TemplateResponse(request, "lawn.html", {"lawn": lawn}) class ObjectionException(Exception): pass def objection(request): raise ObjectionException("Objection!") def sql(request): databases = connections.databases.keys() query = request.GET.get("query") db = request.GET.get("database") if query and db: cursor = connections[db].cursor() cursor.execute(query, []) results = cursor.fetchall() return TemplateResponse( request, "sql.html", {"query": query, "rows": results, "databases": databases}, ) else: return TemplateResponse( request, "sql.html", {"query": None, "rows": None, "databases": databases} ) def file(request): return FileResponse(open(os.devnull, "rb"))