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 次任务。
参考链接