php做网站子页模板,人力资源公司名字大全,免费域名申请教程,网站服务器容量使用ArticleColumnForm表单#xff0c;向数据库提交内容#xff0c;内容包括column。如果同一用户提交的column重复#xff0c;则提示表单出错#xff0c;表单提交失败后#xff0c;重新渲染表单提交html页面#xff0c;其中提示错误信息。
涉及的代码包括#xff1a; …使用ArticleColumnForm表单向数据库提交内容内容包括column。如果同一用户提交的column重复则提示表单出错表单提交失败后重新渲染表单提交html页面其中提示错误信息。
涉及的代码包括
1、forms.py
添加__init__方法初始化表单时包含提交表单的用户信息。
添加clean_column方法检查column是否重复
from django import forms
from .models import ArticleColumnclass ArticleColumnForm(forms.ModelForm):def __init__(self, *args, **kwargs):user kwargs.pop(user, None)super(ArticleColumnForm, self).__init__(*args, **kwargs)self.user userclass Meta:model ArticleColumnfields (column,)def clean_column(self):column self.cleaned_data.get(column)user self.user # 获取传递的用户信息if ArticleColumn.objects.filter(useruser, columncolumn).exists():raise forms.ValidationError(You have already created a column with this name.)return column
2、views.py
只有在form的valid检查通过后才进行页面的重定向否则重新渲染add_column.html页面。渲染是使用的form不是空表而是刚才提交的包含错误信息的form。
login_required
def add_column(request):if request.method POST:# 获取表单article_column_form ArticleColumnForm(datarequest.POST, userrequest.user)#初始化表单时包含用户信息if article_column_form.is_valid():new_articlecolumn article_column_form.save(commitFalse) # 创建数据库对象commitFalse不提交new_articlecolumn.user request.user# 将数据库对象写入new_articlecolumn.save()return HttpResponseRedirect(/article/article-column) # 写完数据后重定向到数据显示页面else:article_column_form ArticleColumnForm()context {article_column_form:article_column_form}return render(request, article/column/add_column.html, context)
3、提交表单的html页面
添加form错误显示区域。
form classform-horizontal action. methodpost{% csrf_token %}div classrowdiv classcol-md-4 text-rightspan栏目名称/span/divdiv classcol-md-8 text-left{{ article_column_form.column }}/div/div{% if article_column_form.column.errors %}div classerrorsul{% for error in article_column_form.column.errors %}li{{ error }}/li{% endfor %}/ul/div{% endif %}div classbutton-groupbutton typesubmitSubmit/buttonbutton typebutton onclickwindow.location.href{% url article:article_column %}Cancel/button/div/form