Django做Form表单编辑时,我们一般这么写get请求:
if request.method == 'GET': obj = models.Article.objects.filter(nid=nid, blog_id=blog_id).first() if not obj: return render(request, 'backend_no_article.html') tags = obj.tags.values_list('nid') if tags: tags = list(zip(*tags))[0] init_dict = { 'nid': obj.nid, 'title': obj.title, 'summary': obj.summary, 'category_id': obj.category_id, 'article_type_id': obj.article_type_id, 'content': obj.articledetail.content, 'tags': tags } form = ArticleForm(request=request, data=init_dict) return render(request, 'backend_edit_article.html', {'form': form, 'nid': nid})
但是,如果前端有错误显示,比如{{ form.title.errors.0 }},就会对前端进行验证,如果传入空值时,在get请求就会提示报错,这个时候就修改传入的数据:form = ArticleForm(request=request, initial=init_dict) 这个时候就不会进行校验了。这个主要看个人需求了,如果想要get请求就报错,就不用改。