This view is confusing. I recommend letting Django help you with this by using the generic view class `FormView`. Here's how it should look (I think this should "Just Work"):

```python
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

from django.utils.decorators import method_decorator
from django.views.decorators.csrf import csrf_protect
from django.views.generic.edit import FormView

from funfactory.urlresolvers import reverse

from .forms import SpeakerRequestForm
from lib import l10n_utils


class SpeakerRequestView(FormView):
    form_class = SpeakerRequestForm
    success_url = reverse('press.speaker-request') + '?success=true'
    template_name = 'press/speaker-request.html'

    @method_decorator(csrf_protect)
    def dispatch(self, request, *args, **kwargs):
        return super(SpeakerRequestView, self).dispatch(request, *args, **kwargs)

    def get_form_kwargs(self):
        kwargs = super(SpeakerRequestView, self).get_form_kwargs()
        kwargs['auto_id'] = '%s'
        return kwargs

    def get_context_data(self, **kwargs):
        context = super(SpeakerRequestView, self).get_context_data(**kwargs)
        context['form_success'] = 'success' in self.request.GET
        return context

    def form_valid(self, form):
        form.send_email(self.request)
        return super(SpeakerRequestView, self).form_valid(form)

    def render_to_response(self, context, **response_kwargs):
        return l10n_utils.render(self.request,
                                 self.get_template_names(),
                                 context,
                                 **response_kwargs)
```