Как разместить данные в базе данных через HTML-шаблон в Django без использования форм - PullRequest
1 голос
/ 04 июня 2019

Я хочу отправить данные в базу данных с помощью html-шаблона и успешно отобразить шаблон, вставленный в вашу базу данных. Но с ошибкой

TypeError at /empdetails
'QueryDict' object is not callable

Вот мой код models.py

class Employee(models.Model):
    eno=models.IntegerField(null=True)
    ename=models.CharField(max_length=20)
    eadd=models.CharField(max_length=20)

и views.py

def Empdetails(request):
   num=request.POST('eno')
   nam=request.POST('ename')
   add=request.POST('eadd')
   details=Employee(eno=num,ename=nam,eadd=add)
   details.save()
   return render(request,'emp.html')

и шаблон emp.html

<!DOCTYPE html>
{% load static %}
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/templates/inserted.html" method="post">
<label for="eno">Eid :</label>
<input type="text" name=" " value="" placeholder="eid" id="eno">
<label for="nam">Ename</label>
<input type="text" name=" " value="" placeholder="name" id="nam">
<label for="add">Eadd</label>
<input type="text" name=" " value="" placeholder="add" id="add">
<input type="submit" value="submit">

</form>

</body>
</html>

1 Ответ

0 голосов
/ 04 июня 2019

Попробуйте напечатать / зарегистрировать содержимое вашего request.POST объекта - отправляете ли вы данные под именами, под которыми, как вы думаете, вы их отправляете?Ваша форма имеет поля с именами ex.reddy, name и add - но ваше представление ищет переменные POST с именами eno, ename и eadd.

По умолчанию .get возвращает None, когда указанный ключ отсутствует в объекте, поэтому, если вы на самом деле не отправляете ключ eno, тогда request.POST.get('eno') будетNone.

Тем не менее, вы получаете IntegrityError при попытке сохранить нулевое значение в поле с null=True.Возможно, у вас есть какие-либо непримененные миграции?

Редактировать: при редактировании querydict is not callable означает, что вы пытаетесь использовать словарь как функцию.request.POST('thing') не может работать - это должен быть request.POST['thing'] или синтаксис .get, который вы использовали ранее.

Редактировать: применительно к другому редактированию, имена полей HTML-формы теперь все пустые.Вам следует присвоить этим полям формы имена name s, под которыми вы хотите отправить значения полей.

...