2017-01-20 18 views
0

/accounts/regist/ のグローバル名 'RegisterForm'のNameErrorが定義されていません。グローバル名 'RegisterForm'が定義されていません

私は 'RegisterForm'を定義しました。 は、私は私がそれを修正するにはどうすればよいurls.py

from django.conf.urls import url 
from . import views 
from django.contrib.auth.views import login, logout 

urlpatterns = [ 
    url(r'^login/$', login, 
     {'template_name': 'registration/accounts/login.html'}, 
     name='login'), 
    url(r'^logout/$', logout, name='logout'), 
    url(r'^regist/$', views.regist,name='regist'), 
    url(r'^regist_save/$', views.regist_save, name='regist_save'), 
] 

にviews.py

from django.contrib.auth.forms import AuthenticationForm 
from django.contrib.auth.decorators import login_required 
from django.http import HttpResponse 
from django.shortcuts import render, redirect 
from django.views.decorators.http import require_POST 



def index(request): 
    context = { 
     'user': request.user, 
    } 
    return render(request, 'accounts/index.html', context) 


@login_required 
def profile(request): 
    context = { 
     'user': request.user, 
    } 
    return render(request, 'accounts/profile.html', context) 


def regist(request): 
    form = RegisterForm(request.POST or None) 
    context = { 
     'form': form, 
    } 
    return render(request, 'accounts/regist.html', context) 


@require_POST 
def regist_save(request): 
    form = RegisterForm(request.POST) 
    if form.is_valid(): 
     form.save() 
     return redirect('main:index') 

    context = { 
     'form': form, 
    } 
    return render(request, 'accounts/regist.html', context) 

にforms.py

from django import forms 
from django.contrib.auth.forms import UserCreationForm 
from django.contrib.auth.forms import AuthenticationForm 


class RegisterForm(UserCreationForm): 
    def __init__(self, *args, **kwargs): 
     __init__(*args, **kwargs) 
     self.fields['username'].widget.attrs['class'] = 'form-control' 
     self.fields['password1'].widget.attrs['class'] = 'form-control' 
     self.fields['password2'].widget.attrs['class'] = 'form-control' 


class LoginForm(AuthenticationForm): 
    def __init__(self, *args, **kwargs): 
     __init__(*args, **kwargs) 
     self.fields['username'].widget.attrs['class'] = 'form-control' 
     self.fields['password'].widget.attrs['classF'] = 'form-control' 

に書きましたか? さらに、私はどこでもグローバルに書かなかったことを本当に理解できません。(私は初心者です)

答えて

0

あなたはforms.pyで定義しましたが、それをviews.pyにインポートしませんでした。

また、お使いの__init__メソッドは機能しません。それはあなたがスーパークラスメソッドを呼び出す方法ではありません。 superメソッドを使用する必要があります。

同様にLoginFormの場合も同様です。 views.pyで

+0

THXのウルをインポートしますか? それはforms.pyですか? – lili

0

.formsからこの を追加するには、私はウルクラスRegisterFormを書くべき道、comments.by RegisterForm

関連する問題