我正在寻找一个解决方案。我有一个网站女巫包含主要应用程序调用'bajki'。我创建了第二个应用程序调用'ustawienia'。在'ustawienia'中我想改变<head>
和页脚部分中的思考:标题,元描述,页脚名称(如populars cms中的标准设置)。所以我在'ustawienia'应用程序中的models.py中创建了一个类:
# -*- coding: utf-8 -*-
from django.db import models
class Ustawienia(models.Model):
title = models.CharField(max_length=75, verbose_name="Tytuł strony(title)")
description = models.TextField(max_length=280, verbose_name="Opis META(description)")
logo = models.CharField(max_length=150, verbose_name="Nazwa LOGO")
footer = models.TextField(verbose_name="Opis stopki")
class Meta:
verbose_name = "Ustawienia Strony"
verbose_name_plural = "Ustawienia Strony"
def __str__(self):
return self.title
我想将模型导入主应用程序调用'bajki'在应用程序'bajki'views.py中我创建:
from ustawienia.models import Ustawienia
def ustawienia(request):
ustawienia = Ustawienia.objects.all()
context ={'ustawienia': ustawienia,}
return render(request, 'bajki/index.html', context=context)
在主应用'bajki'中,我在urls.py中创建了一个网址
from django.urls import path
from bajki import views
urlpatterns = [
path('', views.ustawienia, name="ustawienia"),
]
在项目网址中,我创建了类似的内容:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
...
path('', include('ustawienia.urls')),
]
最后,我想在<head>
部分显示从admin site配置的网站标题:
了header.html
<!DOCTYPE HTML>
{% load staticfiles %}
<html>
<head>
<title>{% for ustaw in ustawienia %}{{ustaw.title}}{% endfor %}</title>
结果是:原始标题消失,新标题不可见。我不知道问题出在哪里。为什么当我在管理员表单中设置标题时,此标题不可见?
答案 0 :(得分:0)
这是因为你不能简单地遍历要在<title>
中显示的项目。每当你在<title>
中迭代循环时,HTML就会对如何表示数据感到困惑。您可以将{% for ustaw in ustawienia %}{{ustaw.title}}{% endfor %}
放入<body>
部分来检查该代码。
您只能在title
中一次显示一个<title>
。
另外,改变你的bajki&gt; views.py一点点:
from ustawienia.models import Ustawienia
def ustawienia(request):
ustawienia = Ustawienia.objects.order_by('pk')
context ={'ustawienia': ustawienia,}
return render(request, 'bajki/index.html', context=context)
答案 1 :(得分:0)
首先使用django solo包在您的ustawienia模型上使用单例模式。您希望只有一个主要设置的地方。页面上只有一个页眉和页脚。最终应该为视图提供更具体的数据,例如每个'bajka'都可以拥有自己的标题。
让我们回到主要设置模型。现在让您的解决方案正常工作将您的views.py更改为:
def ustawienia(request):
ustawienia = Ustawienia.objects.first()
context ={'ustawienia': ustawienia}
return render(request, 'bajki/index.html', context=context)
和您的模板:
<title>{{ ustawienia.title }}</title>
<meta name="description" content="{{ ustawienia.description }}">
放置徽标:
{{ ustawienia.logo }}
与页脚一致:
{{ ustawienia.footer }}
最后一件事是你的视图py应放在bajki应用程序中。我的意思是: