Django POST-запрос не работает правильно - PullRequest
0 голосов
/ 11 ноября 2018

У меня есть проект Django, над которым я сейчас работаю, где я хочу добавить продукт в базу данных. У меня есть несколько полей, где пользователь вводит информацию о продукте, а затем он отправляется в функцию создания и должен сохранить его в базе данных. К сожалению, этого не происходит. Это мое первое использование Django, поэтому я не уверен, что здесь происходит не так. Вот код, который у меня есть:

Моя страница Index.html:

<!DOCTYPE html>
<html>
<body>

<h2>Create product here</h2>
<div>
<form id="new_user_form" method="post">
  {% csrf_token %}
  <div>
  <label for="name" > Name:<br></label>
  <input type="text" id="name"/>
  </div>
  <br/>
  <div>
  <label for="description"> description:<br></label>
  <input type="text" id="description"/>
  </div>
  <div>
  <label for="price" > price:<br></label>
  <input type="text" id="price"/>
  </div>

  <div>
    <input type="submit" value="submit"/>
  </div>
</form>
</body>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<script type = "text/text/javascript">

  $(document).on('submit', '#new_user_form', function(e)){
    e.preventDefault()

    $.ajax({
      type: 'POST',
      url:'/user/create',
      data:{
        name:$('#name').val(),
        description:$('#description').val(),
        price:$('#price').val(),
      }
      success.function(){
        console.log('created')
      }    
    })
  }    
</script>
</html>

Вот мой код urls.py:

from django.contrib import admin
from django.urls import path
from django.conf.urls import include, url
from testapp import views

admin.autodiscover()

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.index),
    path('user/create', views.create_product, name='create_user')
]

Мой код views.py:

from django.shortcuts import render
from testapp.models import User
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt

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

@csrf_exempt
def create_product(request):
    if request.method == 'POST':
        name = request.POST['name']
        description = request.POST['description']
        price = request.POST['price']

        User.objects.create(
            name = name,
            description = description,
            price = price
        )

        return HttpResponse('')

И код models.py:

from django.db import models

# Create your models here.
class User(models.Model):
    name = models.CharField(max_length = 32)
    desscription = models.TextField()
    price = models.CharField(max_length = 128)

Проблема в том, что запрос POST отправляется при запуске, но данные не сохраняются в базе данных, и я не могу понять, почему. Я следовал за несколькими учебниками и документацией, чтобы добраться до этой стадии, но не могу понять, что не работает здесь правильно. Может кто-нибудь взглянуть и дать мне знать, пожалуйста?

...