데이터 새성시 forms.py, models.py 관련문의
308
작성한 질문수 58
예제 내용 그대로 수행하였고요. 몇가지 질문드립니다.
forms.py 에서의 title 정의와, models.py에서 내린 title 정의가 서로 다를 경우, forms.py 가 우선시 되는 것 같은데요. 속성값(max_length)이 달라도 상관없는 지..
[froms.py]
class PostForm(forms.Form): title = forms.CharField(label='제목', max_length= 2)
[models.py]
class PostForm(forms.Form): title = forms.CharField(label='제목', max_length= 2)
content = forms.CharField(label='내용', widget = forms.Textarea)
ModelForm 을 사용시 model =Post 로 가져오는 것 같은데, 기본적인 models 내용은 참조하게 되는건가요?
class PostForm(ModelForm):
class Meta :
model = Post
fields = ['title','content']
labels = {
'title' : _('제목'),
'content': _('내용'),
}
help_texts={
'title' : _('제목을 입력해주세요.'),
'content' : _('내용을 입력해주세요. '),
}
error_messages = {
'name' : {
'max_length': _("제목이 너무 깁니다. 30자 이하로 해주세요.")
}
}
title 입력 폼에서 성공시에는 confirm 으로가고, max 길이 오류시에 create/로 가도록 했었는데요.
[views.py]
def confirm(request):
form = PostForm(request.POST)
if form.is_valid():
return render(request, 'second/confirm.html', {'form': form})
return HttpResponseRedirect('/second/create/')
ModelForm 으로 사용시에는 동일한 코드이고 다만 에러가 나면 list화면으로 넘어가도록 되어 있는데, 성공을 해도 list 화면으로 넘어가는 이유를 모르겠습니다.
[views.py]
def create(request):
if request.method =='POST':
form = PostForm(request.POST)
if form.is_valid():
new_item = form.save()
return HttpResponseRedirect('/second/list/')
form = PostForm()
return render(request, 'second/create.html', {'form':form})
답변 1
0
안녕하세요, 인프런 AI 인턴이에요.
forms.py와 models.py에서 각각 title을 정의하였을 때, forms.py의 정의가 우선시 되는 것은 맞아요. 만약 두 개의 정의가 서로 다르다면, forms.py의 정의가 적용됩니다. 속성값(max_length)이 달라도 상관이 없어요.
ModelForm을 사용할 때, model = Post로 가져오는데, ModelForm은 기본적으로 model의 정보를 참조합니다. 따라서 models.py에 있는 내용을 참조해서 form을 만들어줄 수 있습니다.
마지막으로 title 입력 폼에서 성공시에는 confirm으로 가고, max 길이 오류시에는 create로 가도록 구성했다는데요. views.py에서 confirm 함수와 create 함수를 정의하여야 하며, form.is_valid()가 True일 때 confirm 모듈로 이동할 수 있도록 설정해주어야 합니다.
더 자세한 내용이 필요하시다면, 코드의 전문을 알려주시거나 구체적인 문제를 말씀해주세요. 더 정확한 도움을 드릴 수 있도록 도와드리겠습니다. 감사합니다.
0
안녕하세요. 답변 감사드립니다.
세번째 질문을 다시 설명드립니다.
ㅇ title 입력 폼에서 성공시에는 confirm 으로가고, max 길이 오류시에 create/로 가도록 구현
=> 이건 잘 돌아가구요.
두번째에서, create 함수 내에 confrim 의 역할을 넣는다고 했고, 그러면서 max 길이 오류일때에 list로 간다고 했거든요.
그런데 max 길이가 오류이든 아니든 list로 가는 게 이해가 안되서요.
성공하면 list로 가고, 오류이면 create 에 남도록 하려면 어떻게 수정해야 하나요?

빨간 줄이 뜨네요
0
137
1
import 문장에 빨간줄이 뜹니다.
0
156
1
putty 관련 질문
0
192
1
uWSGI 세팅하기_ 최종 502 bad gateway error
0
809
1
putty 접속관련
0
305
1
[리뷰 삭제하기] 삭제시 path 에러문구나옴.
0
386
1
'폼으로 데이터 전송하기' 강의 소리가 갑자기 작아짐
0
318
1
[스태틱]index.html 의 이미지를 변경하려면 ?
0
508
1
WARNINGS: ?: (staticfiles.W004) The directory 'C:\projects\first-django\static' in the STATICFILES_DIRS setting does not exist.
0
427
1
사진 넣고 엑박...ㅜㅜ
0
335
0
간단한 웹 페이지 띄우기 강의 10분 후반쯤
0
419
0
리뷰 등록 구현하기 4:26 url 오류
0
347
1
create.html
0
360
1
502 badgateway 오류가 떠요
0
284
0
putty에서 막혔네요 ㅠㅠ
0
355
2
django) 한 폼에 여러 모델 데이터 입력하는 경우
0
328
0
파이참 안에서 가상환경 접속이 안 됩니다.
0
691
1
settings.py
0
305
1
만약 웹앱을 업데이트할경우는 어떻게 해야하나요?
0
374
1
CSS 가운데 정렬 적용 안됨
0
4833
3
NameError: name 'os' is not defined
2
1107
1
1분 26초에 post=Post.objects.create(title="this is title", content="this is content")부분이 실행이 안됩니다.
0
267
1
virtualenv가 설치가 안됩니다..
0
439
1
자꾸 에러가뜹니다
0
746
1





