+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

django-为什么这种形式总是无效的

发布于2020-05-29 22:14     阅读(882)     评论(0)     点赞(29)     收藏(1)


我创建了一个具有最少字段的表单(用于测试),但是它从未输入form.is_valid()

这是最少的代码

models.py中

 from django.db import models

 class sample(models.Model):
      field1=models.CharField(max_length=100)
      field2=models.CharField(max_length=100)

在forms.py中

from django.forms import ModelForm
from app.models import sample

class someform(ModelForm):
      class Meta:
        model=sample

在views.py中

some imports

def index(request):
    return render(request, 'app/index.html')

def contact(request):
    if request.method=='POST':
         form=someform(request.POST)
         if form.is_valid():
            field1=form.cleaned_data['field1']
            field2=form.cleaned_data['field2']
            return HttpResponse("valid")
         else:
            return HttpResponse("invalid")
    else:
            form=someform()
            return HttpResponse("error")

问题是,它永远不会输入(如果form.is_valid())。我想念什么吗?请帮忙

在index.html中

<html>
      <body bgcolor="#2E9AFE">
      <form action="contact" method="post" enctype="multipart/form-data">
      {% csrf_token %}
      <input type="text" id="field1" name="field1">
      <input type="text" id="field2" name="field2">
      <input type="submit" id="submit" name="submit">
      </form></body></html>

解决方案


当请求不是在views.py中发布时,首先将表单传递给index.html:

else:
            form=someform()
            return render(request, 'index.html', locals())

在模板中,您应该像这样:

<form action="contact" method="POST" xmlns="http://www.w3.org/1999/html">
    {% csrf_token %}
        {{ form.as_p }}
        <button type="submit" class="btn">Submit</button>
</form>


所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接: https://www.pythonheidong.com/blog/article/397419/

来源: python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

29 0
收藏该文
已收藏

评论内容:(最多支持255个字符)