Django 'RequestContext' is not defined - forms.ModelForm

12,440

Solution 1

you actually dont need to worry about passing RequestContext, because if you use render(), it handles it for you.

so you would do:

return render(request, 'add_company.html', {'form': form})

instead of

return render_to_response('add_company.html', {'form': form}, context)

thats it. of course, you need to import it as well.

from django.shortcuts import render

Hope, this solves your problem

Solution 2

Did you forget to import RequestContext?

from django.template import RequestContext
Share:
12,440

Related videos on Youtube

oranj33
Author by

oranj33

Updated on September 15, 2022

Comments

  • oranj33
    oranj33 almost 2 years

    Ive got the Request Context Error when trying to load my Form.

    1. Created ModelForm on my models.py
    2. created def add on my view
    3. linked url to the view

    views.py

    def add_company(request):
    # Get the context from the request.
    context = RequestContext(request)
    
    # A HTTP POST?
    if request.method == 'POST':
        form = CompanyForm(request.POST)
    
        # Have we been provided with a valid form?
        if form.is_valid():
            # Save the new category to the database.
            form.save(commit=True)
    
            # Now call the index() view.
            # The user will be shown the homepage.
            return index(request)
        else:
            # The supplied form contained errors - just print them to the terminal.
            print form.errors
    else:
        # If the request was not a POST, display the form to enter details.
        form = CompanyForm()
    
    # Bad form (or form details), no form supplied...
    # Render the form with error messages (if any).
    return render_to_response('add_company.html', {'form': form}, context)
    

    But its get stuck on the first line of the view. I made it same as on rango tutorial. There it works. But mine isnt working. Anyone a hint?

    thanks

    Request Header:

    Accept  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Encoding gzip, deflate
    Accept-Language de,en-US;q=0.7,en;q=0.3
    Cache-Control   max-age=0
    Connection  keep-alive
    Cookie  csrftoken=I9120vmRATOck4a0SSqlfJPLl62PMUOR; sessionid=isx0p4ezb2y9m129v6243ui3ucuyvrak
    Host    localhost:8000
    User-Agent  Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:33.0) Gecko/20100101 Firefox/33.0
    

    Response:

    Content-Type    text/html
    Date    Sun, 07 Dec 2014 22:01:03 GMT
    Server  WSGIServer/0.1 Python/2.7.6
    X-Frame-Options SAMEORIGIN
    
    Request Method:     GET
    Request URL:    http://127.0.0.1:8000/comp/new  
    Django Version:     1.7.1
    Exception Type:     NameError
    Exception Value:    
    
    name 'models' is not defined
    
    Exception Location:     /home/mandaro/django/comp/company/forms.py in CompanyForm, line 5
    Python Executable:  /usr/bin/python
    Python Version:     2.7.6
    

    GOT it:

    Problem wasn t on form - it was template import problem. Imported render_to_response instead of render solved it. Now it can goes on. ciao and tx
    
    • Daniel Roseman
      Daniel Roseman over 9 years
      This has nothing to do with the form. It is a basic Python error: you have not imported RequestContext (from django.template).
  • oranj33
    oranj33 over 9 years
    negative. render is imported on the view. sorry for not posting whole view
  • oranj33
    oranj33 over 9 years
    got it now. need render_to_response on import. quasi right ;) thanks
  • Pierre de LESPINAY
    Pierre de LESPINAY about 7 years
    Worth noting that render_to_response is deprecated since django 2.0