Django Я не могу получить данные из базы данных

Админ может изменить веб-заголовок, ключевые слова или описание. Но сейчас это не работает. Когда я захожу на сайт, все в порядке, нет никаких ошибок, но информация не поступает из базы данных.

Это мой home/models.py

from django.db import models
class Setting(models.Model):
    title = models.CharField(max_length=150)
    keywords = models.CharField(max_length=255)
    description = models.CharField(max_length=255)
    company = models.CharField(max_length=50)
    address = models.CharField(blank=True, max_length=150)
    phone = models.CharField(blank=True, max_length=15)
    fax = models.CharField(blank=True, max_length=15)
    email = models.CharField(blank=True, max_length=50)
    smptpserver = models.CharField(blank=True, max_length=30)
    smptemail = models.CharField(blank=True, max_length=30)
    smptpassword = models.CharField(blank=True, max_length=150)
    smptport = models.CharField(blank=True, max_length=15)
    icon = models.ImageField(blank=True, upload_to='images/')
    facebook = models.CharField(blank=True, max_length=50)
    instagram = models.CharField(blank=True, max_length=50)
    twitter = models.CharField(blank=True, max_length=50)
    aboutus = models.CharField(max_length=50)
    contact = models.CharField(max_length=50)
    contact_map = models.CharField(max_length=50)
    references = models.CharField(max_length=50)
    status = models.CharField(max_length=10, choices=STATUS)
    create_at = models.DateTimeField(auto_now_add=True)
    uptade_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.title 

Это мой дом/views.py

from django.http import HttpResponse
from django.shortcuts import render
from home.models import Setting
def index(request):
    setting=Setting.objects.all()
    context={'setting':setting}
    return render(request,'index.html',context)

Это мой home/temp/index.html

{% block title %} {{ setting.title }} {% endblock %}
{% block keywords %} {{ setting.keywords }} {% endblock %}
{% block description %} {{ setting.description }} {% endblock %}

Ваша проблема в том, что вы возвращаете целый набор запросов, а не один элемент

setting=Setting.objects.all()
context={'setting':setting}

Если у вас есть только одна запись Setting, вы можете использовать Setting.objects.first() вместо нее. Если у вас их несколько, вы должны использовать Setting.objects.get(...) для получения одной записи.

Вы можете убедиться в этом сами, если посмотрите значение setting в представлении перед возвратом (используйте breakpoint() для просмотра vars в оболочке, или просто выведите его).

Пока вы используете all(), шаблон будет ожидать итерабельность объектов, по которым вы будете циклиться - эта итерабельность не будет иметь свойств типа keywords, description и т.д.

Вернуться на верх