Forms#- 양식 베이스

17732 단어
Django에서 양식 만들기
  • 양식
    # forms.py
    from django import forms
    
    class NameForm(forms.Form):
        your_name = forms.CharField(label='Your name', max_length=100)
    
    여기서 주의해야 할 사항은 다음과 같습니다.
  • label 매개 변수는 무시할 수 있습니다. Django는 자동으로 이 열에 label을 생성합니다. (사실 여기 label이 지정한 이름은 Django가 자동으로 생성한 이름과 같습니다)
  • max_length은 HTML의 양식에 대응하는 열의 maxlength 속성을 지정하고 브라우저 양식에서 제출한 내용의 길이를 합리화 처리
  • 각 Form 인스턴스 객체에는 다음과 같은 is_valid() 메서드가 있습니다.
  • True
  • 반환
  • 양식 데이터를 cleaned_data 속성에
  • 저장

    마지막으로 위의 Django에서 만든 양식은 HTML에
    
    
    
    으로 표시됩니다. 참고:
  • 태그 태그
  • 커밋 버튼 없음
  • 위의 두 항목 모두 수동으로 HTML에 을 추가해야 합니다.
  • 보기 함수
    from django.shortcuts import render
    from django.http import HttpResponseRedirect
    
    from .forms import NameForm
    
    def get_name(request):
        # if this is a POST request we need to process the form data
        if request.method == 'POST':
            # create a form instance and populate it with data from the request:
            form = NameForm(request.POST)
            # check whether it's valid:
            if form.is_valid():
                # process the data in form.cleaned_data as required
                # ...
                # redirect to a new URL:
                return HttpResponseRedirect('/thanks/')
    
        # if a GET (or any other method) we'll create a blank form
        else:
            form = NameForm()
    
        return render(request, 'name.html', {'form': form})
    
    모든 유용한 정보는 코드의 주석에서
  • 템플릿
    
        {% csrf_token %}
        {{ form }}
        
    
    
    {{ form }} 변수 중의 폼 내용은 자동으로 분리되어 일부 브라우저에서 url, eamil, number 등 라벨에 대한 합리성 검사가 Django보다 엄격하다. 이때 Django의 URLField, EmailField 등을 사용하지 않고 예를 들어 TextField으로 대체할 수 있다.

  • Django의 Form classes
  • 귀속표 실례 v.s. 비귀속표 실례
  • 비귀속 폼은 어떠한 데이터와도 연결되지 않습니다
  • 하나의 귀속표에 제출된 데이터가 포함되어 있어 사용자에게 이 데이터가 합리적인지 알려줄 수 있다(불합리한 데이터가 포함되어 있으면 오류 정보를 통해 사용자에게 어떤 데이터가 합리적인지 알려줄 수 있다)
  • 표의 is_bound 데이터를 통해 이 표의 귀속 여부를 알려줍니다 더 많은 양식 유형
    # forms.py
    from django import forms
    
    class ContactForm(forms.Form):
        subject = forms.CharField(max_length=100)
        message = forms.CharField(widget=forms.Textarea)
        sender = forms.EmailField()
        cc_myself = forms.BooleanField(required=False)
    

    widgets는 각 폼 열에 대응하는 widget class이 HTML을 지정하는 폼의 라벨의 type 속성이 있는데 대부분 field마다 자신의 기본 widget이 있지만 우리는 widget 파라미터를 통해 필요한 type 유형을 현저하게 지정할 수 있다
    성공적으로 제출된 데이터는 사전 형식으로 폼 대상의 cleaned_data 속성에 저장됩니다
    # views.py
    if form.is_valid():
        subject = form.cleaned_data['subject']
        message = form.cleaned_data['message']
        sender = form.cleaned_data['sender']
        cc_myself = form.cleaned_data['cc_myself']
    

    일부 필드는 다른 처리 방식이 필요합니다.예를 들어 업로드된 파일이 request.FILES에 있음
    템플릿의 양식 작업{{ form }} 템플릿 변수는 정의된 필드에 따라 태그 {{ form.as_p }}, {{ form.as_table }}, {{ from.as_ul }}은 각 탭 열에 각각 ,
  • 태그 사용) 상단 ContactForm{{ from.as_p }}을 통해 획득한 HTML 양식:

  • 좋은 웹페이지 즐겨찾기