Django form 모듈 사용 소감
양식 만들기
Form 양식을 만드는 방법은 다음과 같습니다.
첫 번째 방식은forms에 계승하는 것이다.Form, 하위 클래스
중간 필드 유형
class ContactForm(forms.Form):
subject = forms.CharField(max_length=100)
message = forms.CharField(required=False)
그 중에서django는 많은 필드를 내장하여 개발자가 직접 사용할 수 있도록 했다. 또한 이러한 필드를 내장한 검사는 사이트의 폼 데이터 검사를 편리하게 하고 선택할 수 있는 검사 규칙인 Required=False 등을 제공했다. 구체적인 것은Django 홈페이지에서 API를 조회할 수 있다.
두 번째는 데이터베이스에 있는 표를 직접 이용하여 폼 항목을 생성하는 것이다. 이것은 관리 시스템 유형의 사이트에 비교적 유용하다. 만약에 한 사이트에 대량의 실체 데이터가 있어 사용자가 입력해야 한다면 다시 시간을 들여 폼을 정의할 필요가 없고 모델과 직접 연결하기만 하면 된다.
class BookForm(ModelForm):
class Meta:
model = Book
이렇게 하면 책의 모든 필드를 그에 대응하는 폼으로 직접 만들 수 있다. 아마도 모든 모델의 필드 사용자가 작성할 수 있기를 원하지 않을 것이다. 그러면 사용할 수 있다
class Meta:
model = Author
fields = ('name', 'title')
class Meta:
model = Author
exclude = ('birth_date',)
exclude 속성은 어떤 필드를 폼에 넣고 싶지 않은지 설정합니다.
fields 속성은 어떤 것을 당신이 표에 가입해야 하는지를 규정합니다. 물론 두 가지 속성은 하나만 설정하면 됩니다.
둘째, 이 표를 수식한다
django로 자동으로 생성된 폼으로 이루어지는 내용은 당신이 원하지 않는 것이 많기 때문에 독특한 폼을 만들어야 합니다.
템플릿에 표시되는 필드 유형 변경
ModelForm을 계승하여 폼을 만들면 Django는 자동으로 키 필드를 select 컨트롤러로 바꾸고, 밑에 있는 상자를 통해 값을 선택합니다. 이것은 당신이 원하지 않는 것일 수도 있습니다. 사용자가 키의 내용을 작성하는 것을 원하지 않을 수도 있고, 키의 내용은 시스템이 자동으로 연결해서 분배하기 때문에, 폼 항목의 실현 방식을 변경해야 합니다.
model = Author
fields = ('name', 'title', 'birth_date')
widgets = {
'name': Textarea(attrs={'cols': 80, 'rows': 20}),
}
widgets 이 인자를 통해 수동으로 필드를 어떤 input 형식으로 표시할지 설정합니다
오류 메시지 변경
django 폼 시스템에서 처리표에서 is 를 사용하면valid()
방법과 폼 검사에서 폼의 내용이 규칙에 부합되지 않는 것을 발견하면 그는 폼으로 되돌아갈 것이다. 폼에는 중form이 하나도 없다.name.errors는 오류 메시지입니다. 현재 서버에서 폼 필드의 실용 가치가 점점 작아지고 있지만 속담에 프론트 데스크톱 스크립트를 믿지 마세요. 사용자를 믿지 마세요. 그들은 백엔드 검사 기능이 없어서 많은 일을 할 수 있습니다. 그래서 프론트 데스크톱에서 검사를 했지만 백엔드에서 검사를 한 번 해야 합니다. 기본적인 오류 정보를 변경하는 것은 이렇습니다.
name = forms.CharField(error_messages={'required': 'Please enter your name'})
이 폼을 만들 때 다음과 같은 매개 변수를 입력하면 오류 정보를 수정할 수 있습니다. 물론 구체적인 오류 이름은 "Requeired"와 같습니다. 이 이름들은 API에서 찾을 수 있습니다.
셋째, 이 표를 사용하세요.
뷰에서 사용
보기에서 하나의 폼을 사용하는 것은 두 가지 기능일 뿐이다. 하나는 사용자가 정보를 작성할 수 있도록 폼을 만드는 것이고, 다른 하나는 폼의 데이터를 처리하는 것이다.
폼을 만드는 것은 실체 폼을 직접 만드는 대상입니다
form = ContactForm () 에는 autoid=False
이 매개 변수는 주로 폼에 id를 생성하는지 여부를 나타냅니다. 왜냐하면 모든 폼의 필드가 id에 대응하는 것을 원하지 않기 때문입니다. 기본 id가 id 이면form 필드 이름.
기본값 설정
양식 객체를 만들 때 다음 매개 변수인 initial={}을 입력할 수 있습니다.
이것은 모든 필드의 기본값에 대응하는 사전 매개 변수입니다. 정의표를 정의할 때 한 시간대에 initial='http://'을 추가해서 기본값을 설정할 수 있습니다
데이터 업데이트
모델 실례를 사용해서 그를 초기화해야 폼 업데이트 데이터에 도달할 수 있습니다
f = ArticleForm (instance=a) 여기서 a는 article의 모델입니다.
데이터 추출
post 요청을 처리할 때 f = ArticleForm (request.POST) 을 통해 사용자 데이터가 입력된form을 가져옵니다
is 호출 중valid 방법은 나중에 f.cleaned데이터, 데이터가 담긴 사전을 되돌려줍니다.
요약:
위에서 아주 적은form의 기능을 직접 소개합니다. 여러분께djangoform을 알려드리겠습니다. 구체적인 것은 공식 API에 소개하는 것도 괜찮고 영어도 비교적 잘 이해할 수 있습니다. 저는django표에 대해 편리하고 사용하기 쉽다고 생각합니다. 하지만 여러분은django가 제공하는 기능에 지나치게 의존하지 마세요. 비록 그가 강력한 기능을 제공했지만 많은 일들은 한 걸음 한 걸음 지나치게 그가 제공하는 기능에 의존해야 합니다.시스템 전체가 매우 원활하지 못하게 될 것이다.
ps: 위에서 사용한 코드는 대부분 django book과 django 홈페이지 API에서 나온 것이다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django의 질문 및 답변 웹사이트환영 친구, 이것은 우리의 새로운 블로그입니다. 이 블로그에서는 , 과 같은 Question-n-Answer 웹사이트를 만들고 있습니다. 이 웹사이트는 회원가입 및 로그인이 가능합니다. 로그인 후 사용자는 사용자의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.