Reputation: 6234
I'm trying to add form to my django view. The problem is, I cannot declare class. That is the problem:
Addform.py
:
from django import forms
class AddSubjectForm(forms.Form):
def __init__(self):
pass
name = forms.CharField(max_length=200)
Views.py
:
from django.http import HttpResponse
from django.template import Context, loader
from AddSubject.AddForm import AddSubjectForm
def index(request):
template = loader.get_template('AddSubject/index.html')
if request.method == 'POST':
form = AddSubjectForm()
context = Context({
'form': form,
})
else:
form = AddSubjectForm()
context = Context({
'form': form,
})
return HttpResponse(template.render(context))
And finally I recieve error:
Environment:
Request Method: GET
Request URL: http://127.0.0.1:8000/AddSubject/
Django Version: 1.5.1
Python Version: 2.7.5
Installed Applications:
('django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'AddSubject')
Installed Middleware:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware')
Traceback:
File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in get_response
115. response = callback(request, *callback_args, **callback_kwargs)
File "blablabla\AddSubject\views.py" in index
14. form = AddSubjectForm()
Exception Type: TypeError at /AddSubject/
Exception Value: 'module' object is not callable
I was looking for solution in Google, but every response was about filenames. It does not work for me :/ Have you got any idea, why AddSubjectForm doesn't work?
Upvotes: 0
Views: 2627
Reputation: 47172
Your import statement is wrong as per my comment.
What you've written is
from AddSubject.AddForm import AddSubjectForm
change it to
from AddFrom import AddSubjectForm
What using from
does is traverse the ALL modules so that it can import from a relative module. But since AddSubject
isn't a package within AddSubject
it loads from a module instead and treats the package as a module.
A good read is found here: Simple Statements#import
Upvotes: 3