9:django 양식

17824 단어 django
django 자체 폼 시스템, 이 폼 시스템은 속성 이름을 정의할 수 있을 뿐만 아니라 자체 정의 검증도 할 수 있으며, 자체 오류 알림 시스템도 있습니다
이 절에서 우리는 대략적으로django 폼 시스템의 입문 운용을 살펴보았다(구체적으로는 너무 많은 것들이 있는데 주로 현재의 내가 사용하기에 적합하지 않다고 생각한다. 나중에 필요할 때 다시 돌아와 보자)
양식 정의
from django import forms

#          forms.Form   

class ContactForm(forms.Form):

    subject = forms.CharField(max_length=100)

    message = forms.CharField()

    sender = forms.EmailField()

    cc_myself = forms.BooleanField(required=False)

 
기존 모델에 폼을 만들고 싶으면 이렇게 써도 됩니다
from django.forms import ModelForm

# Create the form class.

class ArticleForm(ModelForm):

    class Meta:

        model = Article

 
보기 함수에서 양식 사용
from django.shortcuts import render

from django.http import HttpResponseRedirect



def contact(request):

    if request.method == 'POST': # If the form has been submitted...

        form = ContactForm(request.POST) # A form bound to the POST data

        if form.is_valid(): # All validation rules pass

            # Process the data in form.cleaned_data

            subject = form.cleaned_data['subject']#  cleaned_data   request.POST,                               python                  message = form.cleaned_data['message']

            sender = form.cleaned_data['sender']

            cc_myself = form.cleaned_data['cc_myself']



            recipients = ['[email protected]']

            if cc_myself:

                recipients.append(sender)



            from django.core.mail import send_mail

            send_mail(subject, message, sender, recipients)

            return HttpResponseRedirect('/thanks/') # Redirect after POST

    return HttpResponseRedirect('/thanks/') # Redirect after POST else: form = ContactForm() # An unbound form return render(request, 'contact.html', { 'form': form, })

 
 
템플릿에서 양식 사용
<form action="/contact/" method="post">

{% csrf_token %}<!-- djnago              (Cross Site Request Forgery protection)-->

{{ form.as_p }}

<input type="submit" value="Submit" />

</form>

 
form.as_p의 효과는 다음과 같습니다.
<p><label for="id_subject">Subject:</label>

    <input id="id_subject" type="text" name="subject" maxlength="100" /></p>

<p><label for="id_message">Message:</label>

    <input type="text" name="message" id="id_message" /></p>

<p><label for="id_sender">Sender:</label>

    <input type="text" name="sender" id="id_sender" /></p>

<p><label for="id_cc_myself">Cc myself:</label>

    <input type="checkbox" name="cc_myself" id="id_cc_myself" /></p>

 
만약django의 기본 템플릿을 사용하지 않으려면, 자신의 템플릿을 사용자 정의할 수 있습니다. 예는 다음과 같습니다.
<form action="/contact/" method="post">

    {{ form.non_field_errors }}

    <div class="fieldWrapper">

        {{ form.subject.errors }}

        <label for="id_subject">Email subject:</label>

        {{ form.subject }}

    </div>

    <div class="fieldWrapper">

        {{ form.message.errors }}

        <label for="id_message">Your message:</label>

        {{ form.message }}

    </div>

    <div class="fieldWrapper">

        {{ form.sender.errors }}

        <label for="id_sender">Your email address:</label>

        {{ form.sender }}

    </div>

    <div class="fieldWrapper">

        {{ form.cc_myself.errors }}

        <label for="id_cc_myself">CC yourself?</label>

        {{ form.cc_myself }}

    </div>

    <p><input type="submit" value="Send message" /></p>

</form>

 
너는 이렇게 표 영역을 두루 돌아다닐 수 있다
<form action="/contact/" method="post">

    {% for field in form %}

        <div class="fieldWrapper">

            {{ field.errors }}

            {{ field.label_tag }}: {{ field }}

        </div>

    {% endfor %}

    <p><input type="submit" value="Send message" /></p>

</form>

 
다음은 모든 {{{filed}}에 있어야 하는 속성입니다
{{ field.label }}

The label of the field, e.g. Email address.

{{ field.label_tag }}

The field’s label wrapped in the appropriate HTML <label> tag, e.g. <label for="id_email">Email address</label>

{{ field.value }}

The value of the field. e.g [email protected]

{{ field.html_name }}

The name of the field that will be used in the input element’s name field. This takes the form prefix into account, if it has been set.

{{ field.help_text }}

Any help text that has been associated with the field.

{{ field.errors }}

Outputs a <ul class="errorlist"> containing any validation errors corresponding to this field. You can customize the presentation of the errors with a {% for error in field.errors %} loop. In this case, each object in the loop is a simple string containing the error message.

field.is_hidden

This attribute is True if the form field is a hidden field and False otherwise. It’s not particularly useful as a template variable, but could be useful in conditional tests such as:



{% if field.is_hidden %}

   {# Do something special #}

{% endif %}

 
p

좋은 웹페이지 즐겨찾기