2014-03-18 11 views
6

Ich versuche, einen Registrierungsprozess für meine Website zu initiieren. Ich benutze Python 3.3.5 und Django 1.6.Kein Modul namens 'Formen' Django

Ich erhalte die Fehlermeldung No module named 'forms'. Ich bin ziemlich neu in Python/Django.

Hier sind meine Dateien:

Views.py:

from django.shortcuts import render_to_response 
from django.http import HttpResponseRedirect 
from django.contrib import auth 
from django.core.context_processors import csrf 
from django.contrib.auth.forms import UserCreationForm 
from forms import MyRegistrationForm 


def register_user(request): 
    if request.method == 'POST': 
     form = MyRegistrationForm(request.POST) 
     if form.is_valid(): 
      form.save() 
      return HttpResponseRedirect('/accounts/register_success') 

    else: 
     form = MyRegistrationForm() 
    args = {} 
    args.update(csrf(request)) 

    args['form'] = form 

    return render_to_response('register1.html', args) 



def register_success(request): 
    return render_to_response('register_success.html') 

Forms.py

from django import forms 
from django.contrib.auth.models import User 
from django.contrib.auth.forms import UserCreationForm 


class MyRegistrationForm(UserCreationForm): 
    email = forms.EmailField(required=True) 

    class Meta: 
     model = User 
     fields = ('username', 'email', 'password1', 'password2') 

    def save(self, commit=True): 
     user = super(MyRegistrationForm, self).save(commit=False) 
     user.email = self.cleaned_data['email'] 
     # user.set_password(self.cleaned_data['password1']) 

     if commit: 
      user.save() 

     return user 

die forms.py im selben Ordner wie views.py befindet. Ich habe von django.forms versucht MyRegistrationForm zu importieren, aber dann tritt der Fehler cannot import name MyRegistrationForm auf.

+0

enthält der Ordner __ init __.py Datei? –

Antwort

8

Wenn Sie die Standardadresse views.py nicht geändert haben, ist dies wahrscheinlich in Ihrem Anwendungsordner. Probieren Sie etwas wie from myapp.forms import MyRegistrationForm wo myapp ist der Name Ihrer Anwendung

+1

Das hat den Trick gemacht! Danke vielmals! – edwards17

+0

Np :) vergessen Sie nicht, mich zu wählen – antimatter

+1

Ich werde, wenn ich 15 Rep bekommen :) (neu hier) – edwards17

8

wenn das ist ein App-Modul, Ihre sechste Zeile:

from forms import MyRegistrationForm 

zu:

from .forms import MyRegistrationForm 

(fügen Sie einfach einen Punkt vor dem Formen)

+1

das funktioniert auch! – edwards17

+1

Dies sollte die akzeptierte Antwort sein. Sie möchten Ihren App-Namen nicht in Ihrer App fest codieren. Was, wenn Sie Ihre App umbenennen und den Namen Ihrer App überall im Import haben möchten? – allcaps

+1

Ich stimme nicht zu. Was passiert, wenn Sie mehr als eine Anwendung mit demselben Formularnamen haben? – antimatter