Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Django 'RequestContext' is not defined - forms.ModelForm

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
like image 548
oranj33 Avatar asked Dec 07 '14 21:12

oranj33


2 Answers

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

like image 58
doniyor Avatar answered Nov 19 '22 02:11

doniyor


Did you forget to import RequestContext?

from django.template import RequestContext
like image 27
Ilya Avatar answered Nov 19 '22 04:11

Ilya