Python 在Django中提交post表单时出现值错误

Python 在Django中提交post表单时出现值错误,python,django,forms,Python,Django,Forms,我正在尝试为我正在构建的基于django的web应用程序制作一个提交表单。但是,当我按submit时,出现以下错误: Environment: Request Method: POST Request URL: http://127.0.0.1:8000/create Django Version: 1.10.5 Python Version: 3.6.0 Installed Applications: ['django.contrib.admin', 'django.contrib.a

我正在尝试为我正在构建的基于django的web应用程序制作一个提交表单。但是,当我按submit时,出现以下错误:

Environment:


Request Method: POST
Request URL: http://127.0.0.1:8000/create

Django Version: 1.10.5
Python Version: 3.6.0
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'posts',
 'bootstrap3']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']



Traceback:

File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/core/handlers/exception.py" in inner
  39.             response = get_response(request)

File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response
  187.                 response = self.process_exception_by_middleware(e, request)

File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response
  185.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/Users/wtreston/GDrive/Django/blog/posts/views.py" in post_create
  15.         instance = form.save(commit=False)

File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/forms/models.py" in save
  448.                     'created' if self.instance._state.adding else 'changed',

Exception Type: ValueError at /create
Exception Value: The Post could not be created because the data didn't validate.
这是我创建表单的html文件:

{% extends "base.html" %}


{% block title %}Create new Post | {{ block.super}}{% endblock title %}

{% block content %}

<h1>Create Post</h1>

<form method = 'POST' action = '' class = 'form'>{% csrf_token %}
  <div class="form-group">
    <label for="post_title">Post Title</label>
    <input  class="form-control" id="post_title" placeholder="Post Title">
  </div>
  <div class="form-group">
    <label for="post_content">Post Content</label>
    <textarea class="form-control" rows="6" placeholder="Post Content"></textarea>
  </div>
  <!--<div class="form-group">
    <label for="exampleInputFile">File input</label>
    <input type="file" id="exampleInputFile">
  </div>-->

  <button type="submit" name="your_name" value="your_value" class="btn-link">Go</button>


</form>


{% endblock content %} %}
你知道为什么会这样吗

任何帮助都将不胜感激

谢谢

这可能有助于:-

from .forms import YourFormClass

def post_create(request):
    if not request.user.is_authenticated:#If this condition is without checking POST request
        return(redirect("posts:post_timeline"))

    if request.method == 'POST':
        form = YourFormClass(request.POST)

        if form.is_valid():
            instance = form.save(commit=False)
            instance.save()
            return(HttpResponseRedirect(instance.get_absolute_url()))

        else:
             #Do something
             #OR
             form = YourFormClass()


    context = {
        "form": form,
    }

    return render(request, "post_form.html", context)

如果form.is\u valid()
is\u valid()
是可调用的,请尝试
。@不要忘记这是什么意思?您忘记了
is\u valid
后面的括号。执行此操作
是有效的()
@neverwalkliner我执行了此操作,现在当我单击“创建帖子”时,它刷新帖子,但不创建帖子。尝试删除if语句中的
并请求.Post
。只要
如果form.is_有效():
from .forms import YourFormClass

def post_create(request):
    if not request.user.is_authenticated:#If this condition is without checking POST request
        return(redirect("posts:post_timeline"))

    if request.method == 'POST':
        form = YourFormClass(request.POST)

        if form.is_valid():
            instance = form.save(commit=False)
            instance.save()
            return(HttpResponseRedirect(instance.get_absolute_url()))

        else:
             #Do something
             #OR
             form = YourFormClass()


    context = {
        "form": form,
    }

    return render(request, "post_form.html", context)