2017-02-08 8 views
0

私はビルド中のDjangoベースのWebアプリケーションの送信フォームを作成しようとしています。しかし、私はこのエラーを取得提出押したとき:Djangoで投稿フォームを送信すると値のエラーが発生する

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 %} %} 

これは私のviews.pyでビューを作成することです:

def post_create(request): 
    if not request.user.is_authenticated: 
     return(redirect("posts:post_timeline")) 

    form = PostForm(request.POST or None) 
    if form.is_valid and request.POST: 
     instance = form.save(commit=False) 
     instance.save() 
     return(HttpResponseRedirect(instance.get_absolute_url())) 

    context = { 
     "form": form, 
    } 

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

これはなぜ起こっているのでしょうか?

ご協力いただければ幸いです。

ありがとうございます!

+3

をform.is_valid() '' IS_VALIDは() '呼び出し可能であれば'試してみてください。 – neverwalkaloner

+0

@neverwalkalonerこれはどういう意味ですか? – Will

+0

'is_valid'の後に角括弧を忘れてしまいました。これは 'is_valid()'です。 – neverwalkaloner

答えて

0

これが役立つことがあります。 -

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) 
関連する問題