Python Django | Данные не отображаются на странице
Данные из формы не отображаются на главной странице, хотя в панели администратора сохраняются.
models.py:
from django.db import models
class Post(models.Model):
title = models.CharField('Title', max_length=50)
post = models.TextField('Post')
def __str__(self):
return self.title
views.py:
from django.shortcuts import render, redirect
from .models import Post
from .forms import PostForm
def index(request):
posts = Post.objects.all()
return render(request, 'main/index.html', {'title': 'Main Pge of site', 'post': posts})
def about(request):
return render(request, 'main/about.html')
def add(request):
error = ''
if request.method == 'POST':
form = PostForm(request.POST)
if form.is_valid():
form.save()
return redirect('home')
else:
error = 'Error'
form = PostForm()
context = {
'form': form,
'error': error
}
return render(request, 'main/add.html', context)
forms.py:
from .models import Post
from django.forms import ModelForm, TextInput, Textarea
class PostForm(ModelForm):
class Meta:
model = Post
fields = ['title', 'post']
widgets = {
'title': TextInput(attrs={
'class': 'form-control',
'placeholder': 'Enter title'
}),
'post': Textarea(attrs={
'class': 'form-control',
'placeholder': 'Enter post'
})
}
index.html:
{% extends 'main/base.html' %}
{% block title %}
{{ title }}
{% endblock %}
{% block content %}
<h2>Main page</h2>
{% if posts %}
{% for el in posts %}
<!--<div class="alert alert-warning mt-2">-->
<h3>{{ el.title }}</h3>
<p>{{ el.post }}</p>
<!--</div>-->
{% endfor %}
{% else %}
<p>No data</p>
{% endif %}
{% endblock %}
Ответы (1 шт):
Автор решения: Za Ars
→ Ссылка
def index(request):
posts = Post.objects.all()
return render(request, 'main/index.html', {'title': 'Main Pge of site', 'post': posts})
Тут опечатка в 'post': posts. Замените 'post' на 'posts' и бульте внимательны в следущий раз.