开启代码之旅 Launch With Code


1213 浏览 5 years, 4 months

7 Using Django Forms

版权声明: 转载请注明出处 http://www.codingsoho.com/

form的修改包括

  • 创建新的form文件,并定义form
  • View中对form进行处理,包括, Get,Post
  • 模板中添加form

新建form文件lwc/forms.py,并定义form

from django import forms
from .models import Join

class EmailForm(forms.Form):
    name = forms.CharField(required = False)
    email = forms.EmailField()

class JoinForm(forms.ModelForm):
    class Meta:
        model = Join

添加对form的处理

  • nonModel Form
  • ModelForm

joins/views.py

def home(request):
    form = EmailForm(request.POST or None)
    if form.is_valid():
        email =  form.cleaned_data['email']
        new_join, created = Joins.objects.get_or_create(email=email)
        print new_join, created
    form = JoinForm(request.POST or None)
    if form.is_valid():
        new_join = form.save(commit = False)
        email = form.cleaned_data['email']
        new_join_old, created = Join.objects.get_or_create(email = email)
    context = {"form":form}
    template = "home.html"
    return render(request, template, context)

模板中添加form

templates/home.html

{% extends "base.html" %}

{% block content %}
<h1> Welcome Home! </h1>

<form method="POST" action=""> {% csrf_token %}
    <input type="email" name="email" placeholder="Your email..." />
    {{form.as_p}}
    <input type="submit" value="join" class="btn" />
</form>
{% endblock %}

method 这儿可以是GET或者POST
action 是url
{% csrf_token %} 安全,防止密码泄露
form可以用non-Model form或者model form