Страница Django неправильно сохраняет данные - PullRequest
0 голосов
/ 13 ноября 2018

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

<!DOCTYPE html>
<html>
<body>

<h2>Create product here</h2>
<div>
<form id="new_user_form" method="post" action="user/create"}>
  {% 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>
</div>
</form>
</body>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></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_user, name='create_user')
]

Файл views.py:

from django.shortcuts import render
from testapp.models import User
from django.http import HttpResponse

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

def create_user(request):
    if request.method == 'POST':
        name = request.POST.get('name')
        description = request.POST.get('description')
        price = request.POST.get('price')

        newUser = User(
            name = name,
            description = description,
            price = price
        )

        newUser.save()

        return HttpResponse('')

И файл models.py:

from django.db import models

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

Теперь проблема в том, что когда данные формы отправляются в функцию create_user, она должна взять данные и создать объект с этими данными и сохранить их в базе данных. База данных настроена правильно, так как когда я использую оболочку Django для тестирования, пользователи создаются и сохраняются. Однако через форму и питон что-то здесь не так, и я не знаю почему. Может ли кто-нибудь помочь мне здесь?

1 Ответ

0 голосов
/ 13 ноября 2018

Вам нужно поставить имя во входных html тегах

<input type="text" id="name" name="name"/>
<input type="text" id="description" name="description"/>
<input type="text" id="price" name="price"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...