Как исправить проблему сохранения формы в базу данных django?
Итак, у меня есть форма, которую можно заполнить с веб-страницы, которую я хочу сохранить в моей базе данных django, чтобы создать новый объект при отправке, а не добавлять его в админке. Я попробовал, и система работает, за исключением одной вещи, при сохранении, функция запускается, так как мне удалось переключить страницы из этой функции при нажатии на submit, но объект не найден в базе данных после этого, так что я предполагаю, что сохранение является единственной проблемой.
Вот мой views.py :
def uploadform(request):
if request.method == 'POST':
name = request.POST['name']
details = request.POST['details']
littype = request.POST['littype']
image = request.POST['image']
new_object = PostForm.objects.create(name=name, details=details, littype=littype, image=image)
new_object.save()
return render(request, 'uploadform.html', {})
Вот мой models.py (тот, который сохраняет форму - класс "PostForm") :
from email.mime import image
from django.db import models
from django.db.models import Model
# Create your models here.
class info(models.Model):
name = models.CharField(max_length=100)
details = models.CharField(max_length=10000)
littype = models.CharField(default="Type of Litterature", blank=True, max_length=100)
image = models.ImageField(default=None, blank=True, upload_to='app/files/covers')
class PostForm(models.Model):
name = models.CharField(max_length=200)
details = models.TextField()
littype = models.TextField()
image = models.FileField(upload_to='app/files/')
def __str__(self):
return self.name
Вот моя html страница :
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<link type="text/css" rel="stylesheet" href="templates/uploadform.css">
<link type="text/css" rel="stylesheet" href="templates/form.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Fascinate&family=Roboto:wght@400;500;700&display=swap" rel="stylesheet">
</head>
<body style="height: 1000px;">
<div class="page-title">
<h1 class="page-title-text">Book & Movie & Series Recommendations</h1>
</div>
<div class="page-title-add-button-div">
<a class="page-title-add-button-link" href="/"> Home </a>
</div>
<div>
<form method="POST" action="{% url 'uploadform' %}" enctype="multipart/form-data">
{% csrf_token %}
<input type="text" id="name" name="name" placeholder="Title">
<input type="text" id="details" name="details" placeholder="Summary Details">
<input type="text" id="littype" name="littype" placeholder="Type of Literature">
<input type="file" id="image" name="image" placeholder="Cover Picture">
<input type="submit" value="Submit">
</form>
</div>
</body>
</html>
Есть идеи? Спасибо за ваше время и ответы! Хорошего дня!
Ваш синтаксис неправильный. Должно быть:
request.POST.get('name')
Это быстрый ответ для тех, кому интересно, как я устранил проблему. Во-первых, мне нужно было исправить несколько вещей, которые Адам помог мне найти в комментариях, но основная проблема заключалась в том, что при создании нового объекта в базе данных вместо сохранения из модели "info", которая выглядит точно так же и находится в моей базе данных, я сохранял из модели "PostForm", которая не может быть найдена в базе данных.
Надеюсь, это кому-нибудь поможет, и я постараюсь оставаться активным и отвечать на любые вопросы, если они у вас возникнут.