Django 表单视图,Django的表单视图可以处理一些基本的表单任务,如表单验证、编辑等。以前面的FileFieldView视图为例,如果当用户没有选择任何文件时就单击提交按钮进行提交,表单会阻止HTTP请求并弹出提示信息,如图所示。
另外当用户提交了合法信息后,还可以使用form_valid()方法执行额外操作,下面修改FileFieldView视图,添加form_valid()方法:
class FileFieldView(FormView):
...
def form_valid(self, form)
print('data: ', form.data)
return super().form_valid(form)
def post(self, request, *args, **kwargs):
...
if form.is_valid():
for f in files:
print(type(f)) # 打印文件信息
handle_uploaded_file(f)
return self.form_valid(form)
else:
return self.form_invalid(form)
重启Web服务并上传文件,此时服务器输出以下信息:
>>> [27/Dec/2017 11:16:51] "GET /blog/multyupload/ HTTP/1.1" 200 411
>>> <class 'django.core.files.uploadedfile.InMemoryUploadedFile'>
>>> <class 'django.core.files.uploadedfile.InMemoryUploadedFile'>
>>> data: <QueryDict: {'csrfmiddlewaretoken': ['pEOHKlJwL9gqyONZt8z4CrJk9PjVVV
>>> [27/Dec/2017 11:17:03] "POST /blog/multyupload/ HTTP/1.1" 302 0
编辑表单视图
通过使用表单视图,可以在编写很少的代码的情况下完成模型的增删改操作。下面以Author模型为例看看如何使用表单视图编辑模型。
修改Author模型类:
from django.db import models
from django.shortcuts import reverse
class Author(models.Model):
name = models.CharField(max_length=200)
email = models.EmailField()
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('blog:author-detail', kwargs={'pk', self.pk})
添加视图:
添加模板:
author_form.html:
<form action="{% url 'blog:author-add' %}" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit" />
</form>
author_detail.html:
author_update.html:
<form action="{% url 'blog:author-update' object.id %}" method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Update" />
</form>
author_confirm_delete.html:
<form action="{% url 'blog:author-delete' object.id %}" method="post">{% csrf_token %}
<p>确定要删除"{{ object.name }}"吗?</p>
<input type="submit" value="Confirm" />
</form>
添加URL:
需要注意的是,UpdateView和DeleteView对于POST和GET请求都有不同的处理方式,GET请求只会用于显示确认信息,而POST请求才会真正执行操作,例如更新Author时首先弹出确认框,只有单击Update按钮之后才会真正更新信息,如图所示。
Delete操作同样需要先进行确认才可以真正执行,如图所示。
当前用户
一般进行数据操作时都需要记录执行人,也就是当前登录的用户,Django使用User模块进行用户管理,下面修改Author模型使其能够记录添加Author操作的用户信息。
修改AuthorCreate视图:
执行migrations命令。
重新启动Web服务并登录到Admin(目前网站只有Admin后台登录功能),添加Author。
酷客教程相关文章:
评论前必须登录!
注册