sqlite Django我无法从数据库中提取数据

oprakyz7  于 2022-12-13  发布在  SQLite
关注(0)|答案(1)|浏览(197)

管理员可以更改网站标题,关键字或描述。但它不工作rn。当我进入网站一切都很好,我没有任何错误,但信息不是来自数据库。
这是我的家/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)

这是我的主页/temp/index. html

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

rhfm7lfc1#

您的问题是返回的是整个查询集,而不是单个项

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

如果您只有一个Setting记录,您可以使用Setting.objects.first()来代替。如果您有多个记录,您应该使用Setting.objects.get(...)来撷取单一记录。
如果在返回setting之前在视图中检查它的值(使用breakpoint()查看shell中的变量,或者直接打印出来),您自己就可以看到这一点。
只要你使用all(),模板就需要一个对象的可迭代对象来循环--这个可迭代对象不会有keywordsdescription等属性。

相关问题