일반보기를 사용하면 django의 멋진 기능을 템플릿에 "이 필드가 필요합니다!"와 같이 게시합니다.Form validate like GenericView
내가 알고있는 것으로부터 CreateView는 form_invalid
이라는 메서드를 상속받으며 self.render_to_response(self.get_context_data(form=form))
을 리턴합니다. 그리고 저는 그게 마술을하고있는 것입니다.
이제 양식을 쓰고 있으며 해당 기능을 사용할 수 있는지 궁금한가요?
custom_user 모델을 만들고 간단한 만들기 기능을 만들려고합니다. 지금까지 내가 가지고 :
Models.py
class Custom_User(AbstractBaseUser):
email = models.EmailField(max_length=250, unique=True)
password = models.CharField(max_length=100)
USERNAME_FIELD = 'email'
을 forms.py
class create_User_Form(forms.ModelForm):
confirm_password = forms.CharField(widget = forms.PasswordInput(attrs={'class' :'form-control'}))
class Meta:
model = Custom_User
fields = ['email', 'password']
widgets = {
'email' : forms.TextInput(attrs={'class' :'form-control'}),
'password' : forms.PasswordInput(attrs={'class' :'form-control'}),
}
def clean(self):
cleaned_data = super(create_User_Form, self).clean()
password = cleaned_data.get("password")
confirm_password = cleaned_data.get("confirm_password")
if password != confirm_password:
raise forms.ValidationError(
"password and confirm_password does not match"
)
return self.cleaned_data
urls.py
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^create_user/$', views.create_user, name='create_user'),
]
views.py
def create_user(request):
form = create_User_Form(request.POST)
if form.is_valid():
print('valid')
else:
print('error')
return redirect('Eapp:index')
def index(request):
create_user_form_ = create_User_Form()
context = {
'create_user_form' : create_user_form_,
}
return render(request, 'index.html', context)
입니다. [docs] (https://docs.djangoproject.com/en/1.10/ref/class-based-views/generic)의'CreateView'를보십시오. -editing/# django.views.generic.edit.CreateView). View 클래스에서'form_class'를 지정할 수 있습니다. –
@gitblame 나는 그 문서에 대해 정말로 이해하지 못하고있다. 내 색인 페이지를 렌더링하는보기 기능으로 내 게시물을 편집했습니다. 그것이 CreateView를 보여주고 싶습니다.이게 훨씬 복잡한 일입니까? – vandelay
자습서가 필요한 경우 godjango의 CBV에 대한 [these] (https://godjango.com/15-class-based-views-part-1-templateview-and-redirectview/) 자습서를 시청하는 것이 좋습니다. –