【问题标题】:I am doing a training project and have encountered a problem我在做一个培训项目,遇到了问题
【发布时间】:2020-05-08 19:44:14
【问题描述】:

我正在做一个培训项目,但遇到了问题。我尝试在主页上显示“事件”块和“新闻”块,但是当我运行循环循环时,只显示一个块,第二个不显示。解释谁知道我做错了什么。我已经解决了这个问题三天了。提前感谢谁会回复帮助

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

{% if post %}
    {% for post in post %}
        {{ post.title }}
    {% endfor %}
{% else %}
    <p>У вас нет материала</p>
{% endif %}
{% if event %}
    {% for event in event %}
        {{ event.name }}
    {% endfor %}
{% else %}
    <p>У вас нет материала</p>
{% endif %}



</body>
</html>

观看次数:

from django.shortcuts import get_object_or_404, render
from django.views.generic.base import View

from .models import Blog, Event
# Create your views here.

class EventView(View):
    def get(self, request):
        event = Event.objects.all()
        return render(request, "home/home_list.html", {"event": event})

class BlogView(View):
    def get(self, request):
        post = Blog.objects.all()
        return render(request, "home/home_list.html", {"post": post})

网址:

from django.urls import path
from . import views

urlpatterns = [
    path("", views.EventView.as_view()),
    path("", views.BlogView.as_view())

]

型号:

from django.db import models
from datetime import date

# Create your models here.

class Blog(models.Model):
    """Новости"""
    title = models.CharField("Заголовок", max_length=100)
    description = models.TextField("Описание")
    descriptionTwo = models.TextField("Описание (второй абзац)", blank=True, default="")
    blockquote = models.TextField("Цитата", blank=True, default="")
    short = models.TextField("Краткое описание", max_length=300)
    poster = models.ImageField("Изображение", upload_to="post/")
    prewiew = models.ImageField("Превью", upload_to="post/")
    dataPost = models.DateField("Дата публикации", default=date.today)
    url = models.SlugField(max_length=160, unique=True, blank=True)
    draft = models.BooleanField("Черновик", default=False)


    def __str__(self):
        return self.title


    class Meta:
        verbose_name = "Новости"
        verbose_name_plural = "Новости"


class Event(models.Model):
    """События"""
    name = models.CharField("Заголовок", max_length=100)
    adress = models.TextField("Адрес")
    description = models.TextField("Описание")
    short = models.TextField("Краткое описание")
    phone = models.TextField("Контактный номер телефона")
    email = models.EmailField()
    image = models.ImageField("Изображение", upload_to="event/")
    dataStart = models.DateField("Дата старта", default=date.today)

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = "Событие"
        verbose_name_plural = "События"

管理员:

from django.contrib import admin
from .models import Blog, Event

# Register your models here.

admin.site.register(Event)
admin.site.register(Blog)

【问题讨论】:

    标签: django for-loop url view model


    【解决方案1】:

    观看次数

    您需要一个包含eventsposts 的上下文的视图

    class EventView(View):
        def get(self, request):
            events = Event.objects.all()
            posts = Blog.objects.all()
            return render(request, "home/home_list.html", {"events": events, "posts":posts})
    

    模板

    在两者的模板循环中

    {% if posts %}
    {% for p in posts %}
        {{ p.title }}
    {% endfor %}
    {% else %}
    <p>У вас нет материала</p>
    {% endif %}
    {% if events %}
    {% for e in events %}
            {{ e.name }}
        {% endfor %}
    {% else %}
        <p>У вас нет материала</p>
    {% endif %}
    

    【讨论】:

    • 谢谢,您的回答有帮助。
    【解决方案2】:

    在每个循环中,为“循环对象”和要循环的列表/字典使用不同的名称。像这样:

    {% if post %}
        {% for p in post %}
            {{ p.title }}
        {% endfor %}
    {% else %}
        <p>У вас нет материала</p>
    {% endif %}
    {% if event %}
        {% for e in event %}
            {{ e.name }}
        {% endfor %}
    {% else %}
        <p>У вас нет материала</p>
    {% endif %}
    
    
    

    它解决了你的问题吗?

    【讨论】:

    • 感谢您的回答在一定程度上有所帮助,但 bb4L 编辑上下文对此进行了补充
    猜你喜欢
    • 2020-11-08
    • 1970-01-01
    • 2021-05-18
    • 1970-01-01
    • 2020-12-12
    • 1970-01-01
    • 2019-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多