Need advice of refactoring views.py
1.Using render shortcut function is more preferable than render_to_response. The difference is explained on SO 

def index(request):
    intentions = Intention.objects.all();
    return render('intentions/templates/index.html', {'intentions': intentions})


2.Then django has another shortcut get_object_or_404

intention = get_object_or_404(Intention, pk=id)


It raises 404 Exception which is processed by middleware. You don't need to call custom HttpRequest for that. 

3.Here lazy version reverse_lazy is redundant. Call reverse instead.

return HttpResponseRedirect(reverse_lazy('intention-show', args=[intention.id])) # Redirect after POST


4.You also can look through CBV. Django offers for you some base class to handle forms. It may reduce your code.