Eu estava curioso para entender como funcionava esse trecho de código.
return render(request, 'index.html', { 'variavel' : valor })
Lendo um pouco sobre Django na internet, vi esse trecho de código onde explica como funciona o ''render'' do django.
#Abra o console do django
django-admin shell
#importe essa lib
#imprimindo a hora como exemplo
from django.template import Template, Context
import datetime
#setando hora para "variavel"
hora = datetime.datetime.now()
#chamando template
meuTemplate = Template("<h1>{{ variavel }}</h1>")
#recebendo hora
recebendoHora = Context({'variavel' : hora})
#renderizando hora
meuTemplate.render(recebendoHora)
Nesse caso o comando "render", faz o papel de juntar meu "template", o "context" que é responsavel por receber a variavel por dicionario e com isso não precisamos ter que importar varias libs como:
from django.http import HttpResponse
from django.template import Template, Context
para quem quiser se aprofundar mais no assunto, recomendo a leitura: http://masteringdjango.com/django-templates/
XD