где ошибка в моем коде в ajax или в django? - PullRequest
0 голосов
/ 05 марта 2019

Я пытаюсь вставить данные в базу данных, используя django и ajax.

У меня есть форма, которая позволяет пользователю вводить данные в текстовые поля и выбирать между 2 вариантами с помощью переключателя.

проблема в том, что когда я пытаюсь ввести путь, система отображает следующую ошибку:

ValueError at / addperson / view map.views.addperson не возвращает объект HttpResponse.Вместо этого он вернул None.

models.py

class Person(models.Model):
    boolChoice = (
        ("Male","M"),("Female","F")
        )

    name = models.CharField(max_length=50)
    date = models.DateField()
    description = models.TextField()
    gender = models.BooleanField(choices= boolChoice)

    def __str__(self):
        return str(self.name)

addPerson.html

{% extends 'base.html' %}

{% block content %}

<div class="hero__content">
   <form method="POST" class="form-style-9">{% csrf_token %}
        {{ form.as_p }}


<ul>

    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<li>

    <h2>Add Member</h2>

</li>

<li>
    <input type="text" name="name" class="field-style field-split align-right" placeholder= "enter ur name " id="name"/>
</li>
<li>
    <input type="date" name="date" class="field-style field-full align-none" placeholder= " your birthdate" id="birthdate" />

</li>
<li>
    <input type="radio" name="gender" id="male" value="male"> Male<br>
    <input type="radio" name="gender" id="female" value="female"> Female<br>

</li>

<li>
<textarea name="description" class="field-style" placeholder= "introduce yourself " id="description"></textarea>
</li>

<li>
<input type="submit" class="field-style field-full align-none" id="save" value="ADD" />
    <script type="text/javascript">
                 $(function(){
                    $('#save').on('click',function(e){
                        e.preventDefault()
                        name=$('#name').val()
                        birthdate=$('#birthdate').val()
                        description=$('#description').val()
                        radioValue = $("input[name = 'gender']:checked").val()
                        alert("radioValue =", radioValue)
     $.ajax({
      url:'/addperson/',
      method:'POST',
      data: {

                            na:name,
                            bi:birthdate,
                            de:description,
                            ra:radioValue
      },
      headers:{
       'X-CSRFToken':'{{csrf_token}}'
      }
     }).done(function(msg) {
                        document.location = "/home.html"
                        alert('data saved')


     }).fail(function(err){
      alert('failed')
     })
    })
   })
  </script>
</li>
    </ul>
</form>

  </div>


{% endblock %}

views.py

def addperson(request):

    if request.method == "POST":
        name = request.POST['na']
        birthdate = request.POST['bi']
        description=request.POST['de']
        radiovalue=request.POST['ra']

        person=Person.objects.create(
            name=name,
            date=birthdate,
            description=description,
            gender=radiovalue
        )
        person.save()
        return render(request,'./home.html')

urls.py

from django.urls import path, include

from django.contrib import admin
from map import views as mapviews
admin.autodiscover()

urlpatterns = [

                       path('admin/', admin.site.urls),
                       path('', mapviews.index),
                       path('addperson/',mapviews.addperson),

                      ]

1 Ответ

0 голосов
/ 05 марта 2019

Я решил проблему, потому что я получал форму, используя Метод GET , поэтому я создаю путь, позволяющий пользователю получить форму с помощью Метод POST

...