无涯教程-Django - 表单(Forms)

76 阅读1分钟

Django Forms 表单可用于将数据移入或移出模型。替代方法是 ModelAdmin 但建议仅由 superuser staff用户使用。 Web应用程序的最终用户必须从模板页面中的表单提交数据。 无涯教程可以选择使用HTML 或 ModelForm form 中创建字段。 在这两种情况下,都首先在 app 目录下创建一个名为 forms.py 的新文件。

    mysite    
        └── ...    
    myapp
        └── ...
        └── forms.py
                                

Django ModelForm

ModelAdmin 相似,可以使用 ModelForm 类,并创建一个链接到 models.py 下定义的字段的表单对象。 forms.py

    from django import forms
    from .models import Blog
</span><span class="kwd">class</span><span class="pln"> </span><span class="typ">BlogForm</span><span class="pun">(</span><span class="pln">forms</span><span class="pun">.</span><span class="typ">ModelForm</span><span class="pun">):</span><span class="pln">
    </span><span class="kwd">class</span><span class="pln"> </span><span class="typ">Meta</span><span class="pun">:</span><span class="pln">
        model </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Blog</span><span class="pln">
        fields </span><span class="pun">=</span><span class="pln"> </span><span class="str">__all__</span><span class="pln">
                            </span></pre>

__all__ 包括模型类下的所有字段。您也可以使用字段名称的元组。

现在,此 ModelForm 对象将在 views.py 下使用,如下所示: views.py

    from django.shortcuts import render, redirect
    from .forms import BlogForm
</span><span class="kwd">def</span><span class="pln"> my_view_function</span><span class="pun">(</span><span class="pln">request</span><span class="pun">):</span><span class="pln">
    form </span><span class="pun">=</span><span class="pln"> </span><span class="typ">BlogForm</span><span class="pun">(</span><span class="pln">request</span><span class="pun">.</span><span class="pln">POST </span><span class="kwd">or</span><span class="pln"> </span><span class="kwd">None</span><span class="pun">)</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> form</span><span class="pun">.</span><span class="pln">is_valid</span><span class="pun">():</span><span class="pln">
        form</span><span class="pun">.</span><span class="pln">save</span><span class="pun">()</span><span class="pln">
        </span><span class="kwd">return</span><span class="pln"> redirect</span><span class="pun">(</span><span class="str">/mypageurl/</span><span class="pun">)</span><span class="pln">
    </span><span class="kwd">return</span><span class="pln"> render</span><span class="pun">(</span><span class="pln">request</span><span class="pun">,</span><span class="pln"> </span><span class="str">my_template_page.html</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="str">form</span><span class="pun">:</span><span class="pln">form</span><span class="pun">})</span><span class="pln">
                            </span></pre>
  • redirect                 -  此函数可以将请求重定向到给定的URL路径。
  • request.POST      -  提交表单数据。
  • is_valid()              -  此函数根据模型字段类型和选项验证表单数据。
  • save()                     -  此函数将数据保存在数据库中。

最后,无涯教程需要在模板页面中制作一个表单元素,如下所示: templates - my_template_page.html

<form method="POST">
    {% csrf_token %}
    {{ from.as_p }}
    <input type="submit" value="Submit" />
</form>
  • method =" POST"     -  它是指Http POST 请求。默认值为 GET
  • csrf_token                   -  这是一种安全令牌,可防止跨站点引用伪造
  • form                                 -  除了模型字段元素之外,还需要一个提交按钮才能触发 form 次任务。

参考链接

www.learnfk.com/django/djan…