Zahid Khan
Zahid Khan

Reputation: 3233

Form.is_valid() returns False?

Why am I asking question despite already been asked? I read many question posted on Stack Overflow but I am not able to fix the code as I am new to Python Language.

What am I trying to do: Simply trying to take the input from user and return an HttpResponse (if successfully). Otherwise, an error HttpResponse message to return.

Problem : The MyForm.is_valid() in Forms.py is always returning False! I tried many solutions posted on previous questions and also read the documentary thrice but not able to understand, what am I doing wrong?

Views.Py

from django.http import HttpResponse
from .forms import PostForm
.
.
. <<code here>>

def register(request):
            if request.method == 'POST':
                Myform =  PostForm(request.POST)
                if Myform.is_valid():                                
                            return HttpResponse("<h1>Is_Valid is TRUE.</h1>")
                else:
                   return HttpResponse("<h1>Is_Valid is False.</h1>")               
            else:
                    return HttpResponse("<h1> GET REQUEST>>>> </h1>")

Forms.Py

from django.forms import ModelForm
from .models import Post
class PostForm(ModelForm):
    class Meta:
                 model= Post
                 fields = ['Username']

Models.Py

from django.db import models
class Post(models.Model):
                    Username = models.CharField(max_length = 20)

                    def __str__(self):
                                return self.name

HTML CODE

{% block body %}
<div class="container-fluid">
  <form method="POST" class="post-form" action="{% url 'submit' %}">
    {% csrf_token %}
     <div class="form-group"> <!-- Full Name -->
      <label for="Username" class="control-label">Full Name</label>
      <input type="text" class="form-control" id="Username" name="full_name" placeholder="Enter the name of Patient here.">
      </div>      

     <div class="form-group"> <!-- Submit Button -->
          <button type="submit" class="btn btn-primary"> Submit!</button>
      </div>                 
   </form>  
  </div>    
       <hr/>
{% endblock %}

Urls.Py

from django.conf.urls import  url
from .  import views
urlpatterns = [      

url(r'^/submit$', views.register , name = 'submit'),                                                      

]

Upvotes: 2

Views: 61

Answers (1)

Lemayzeur
Lemayzeur

Reputation: 8525

The name of your input should be username: This is how you send this value to the form.

NOTE: It's better to use the django form, that you've already done with ModelForm

<input type="text" class="form-control" id="username" name="username" placeholder="Enter the name of Patient here.">

Upvotes: 3

Related Questions