首页 > 解决方案 > 在 Django 中为其创建应用程序后未出现消息

问题描述

我创建了一个名为营销应用程序的应用程序,它可以自定义要在网站页面顶部写入的消息。我的问题是,当一切都配置好时,这些消息没有显示,我不知道为什么

这是营销应用程序的模型

class MarketingMessage(models.Model):
    message = models.CharField(max_length=120)
    active = models.BooleanField(default=False)
    featured = models.BooleanField(default=False)
    timestamp = models.DateTimeField(auto_now_add=True, auto_now=False)
    updated = models.DateTimeField(auto_now_add=False, auto_now=True)
    start_date = models.DateTimeField(
        auto_now_add=False, auto_now=False, null=True, blank=True)
    end = models.DateTimeField(
        auto_now_add=False, auto_now=False, null=True, blank=True)

    def __str__(self):
        return str(self.message[:12])

这是核心应用程序的视图

from marketing.models import MarketingMessage

class HomeView(ListView):
    model = Item
    paginate_by = 10
    template_name = "home.html"
    marketing_message = MarketingMessage.objects.all()[0]

这是模板

{% if marketing_message %}

<div class="alert alert-light alert-top-message" role="alert"style="margin-bottom: 0px; border-radius: 0px; text-align: center;padding-top:80px">
    <div class="container">
    <h3>{{ marketing_message.message }}</h3>
    <button type="button" class="close" data-dismiss="alert" aria-label="Close">
    <span aria-hidden="true">&times;</span>
    </button>
    </div>
</div>
{% endif  %}

这是营销的admin.py

from django.contrib import admin
from .models import MarketingMessage
# Register your models here.


class MarketingMessageAdmin(admin.ModelAdmin):
    class Meta:
        model = MarketingMessage


admin.site.register(MarketingMessage, MarketingMessageAdmin)

标签: pythondjango

解决方案


如果你想从另一个模型中获取数据,你可以覆盖视图中的获取上下文数据方法

class HomeView(ListView):
    model = Item
    paginate_by = 10
    template_name = "home.html"

    def get_context_data(self, **kwargs):
        context = super(HomeView, self).get_context_data(**kwargs)
        context['marketing_message'] = MarketingMessage.objects.all()
        return context

推荐阅读