2014-03-18 3 views
6

내 웹 사이트의 등록 프로세스를 시작하려고합니다. 나는 Python 3.3.5와 Django 1.6을 사용하고있다.'forms'라는 모듈이 없습니다. Django

No module named 'forms'이라는 오류 메시지가 나타납니다. 나는 Python/Django에 상당히 익숙하다.

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 

forms.py이 views.py와 같은 폴더에있는 다음

내 파일입니다. django.forms import MyRegistrationForm에서 시도했지만 오류 cannot import name MyRegistrationForm이 발생합니다.

+0

폴더에 __ init __.py 파일이 있습니까? –

답변

8

views.py의 기본 위치를 변경하지 않은 경우 응용 프로그램 폴더에있을 가능성이 큽니다.

from .forms import MyRegistrationForm 

가 (단지 형태 전에 점을 추가

from forms import MyRegistrationForm 

에 : 응용 프로그램 모듈은, 당신의 6 라인을 그게 전부 변경하면 myapp 응용 프로그램

+1

그 트릭을 했어! 고마워요! – edwards17

+0

Np :) 나를 투표하는 것을 잊지 마라 – antimatter

+1

내가 15 명의 담당자에게 갈 때 나는 갈 것이다 :) (새로운 여기의) – edwards17

8

의 이름입니다 from myapp.forms import MyRegistrationForm 같은 시도)

+1

이것은 또한 일한다! – edwards17

+1

이것은 허용 된 대답이어야합니다. 앱에 앱 이름을 하드 코딩하고 싶지는 않습니다. 앱의 이름을 변경하고 어디서나 앱 이름을 가져 오려면 어떻게해야할까요? – allcaps

+1

나는 동의하지 않는다. 같은 양식 이름을 가진 응용 프로그램이 두 개 이상 있다면 어떨까요? – antimatter

관련 문제