Как мне сделать другую переменную доступной в представлениях?

#python #django

#python #django

Вопрос:

Я пытаюсь добавить еще один раздел на веб-страницу. первая половина работает, но я не могу заставить вторую половину отображаться. Первая половина запускает функцию с именем PageFour, у нее есть переменная для blog . Я создал другую функцию под названием pageFourBlogs, которая определяет переменную для блогов. Однако она по-прежнему не отображается, что я делаю не так? Заранее спасибо за ваши усилия.
urls.py

 from django.shortcuts import render, get_object_or_404
from .models import Blog


def all_blogs(request):
    blogs = Blog.objects.order_by('?')
    return render(request, 'blog/all_blogs.html', {'blogs': blogs})

def Entertainment(request):
    blogs = Blog.objects.filter(category='Entertainment')
    return render(request, 'blog/Entertainment.html', {'blogs': blogs})


def Technology(request):
    blogs = Blog.objects.filter(category='Technology')
    return render(request, 'blog/Technology.html', {'blogs': blogs})


def Culture(request):
    blogs = Blog.objects.filter(category='Culture')
    return render(request, 'blog/Culture.html', {'blogs': blogs})


def pageOne(request, blog_id):
    blog = get_object_or_404(Blog, pk=blog_id)
    return render(request, 'blog/pageOne.html', {'blog': blog})


def pageTwo(request, blog_id):
    blog = get_object_or_404(Blog, pk=blog_id)
    return render(request, 'blog/pageTwo.html', {'blog': blog})


def pageThree(request, blog_id):
    blog = get_object_or_404(Blog, pk=blog_id)
    return render(request, 'blog/pageThree.html', {'blog': blog})


def pageFour(request, blog_id):
    blog = get_object_or_404(Blog, pk=blog_id)
    return render(request, 'blog/pageFour.html', {'blog': blog})


def pageFourBlogs(request):
    blogs = Blog.objects.order_by('?')
    return render(request, 'blog/pageFour.html', {'blogs': blogs})
  

pageFour.html

 {% extends 'blog/navBarFooter.html' %}
{% block content %}
<h1 class="text-center mt-3" id="blogdetailtitle">{{ blog.title }}</h1>
<h5 class="text-center mt-3" id="blogdetailtitle">By: {{ blog.by }} | {{ blog.category }}</h5>

<hr color="black">
<div class="col-lg-12 col-md-8">

    <img id="imgRight" src="{{ blog.pageFourImage.url }}" height=190 width=350>
    <p id="textLeft">{{ blog.pageFour | safe }}</p>
</div>
<hr color="black">
<a href="{% url 'all_blogs' %}">
    <p style="
 
    margin-left: 40%;
        box-sizing: content-box;
        width: 300px;
        height: 80x;
        border: 1px solid black;
        padding: 10px;
        box-shadow: 5px 10px 18px gray;
        text-align: center; 
        font-family: 'Russo One', sans-serif; 
        color: black;
        font-size: 40px;">Next</p>
</a>

<div class="row">
    {% for blog in blogs %}
    <div class="col-lg-4 col-md-6">
        <img src="{{ blog.summaryImage.url }}" height=190 width=350>

        <a href="{% url 'pageOne' blog.id %}">
            <h2>{{ blog.title }}</h2>
        </a>
        <p>By: {{ blog.by }} | {{ blog.date|date:'M d Y'|upper }}</p>
        <p>{{ blog.summary }}</p>

    </div>
    {% endfor %}
</div>
{% endblock %}
  

Комментарии:

1. Ваш pageFour передает только объект blog и другое представление blogs , поэтому в зависимости от выбранного вами URL-адреса вы запускаете одно из двух представлений, и каждый раз данные любого блога / blogs будут отсутствовать.

2. Я думаю, что понимаю, но я не уверен, как это изменить. Есть ли способ изменить функцию PageFour, чтобы она также включала блоги? Я пробовал, страница не будет отображаться, она просто показывает html.