Глобальная переменная не работает внутри представлений django

#python #html #django #django-templates

#python #HTML #django #django-шаблоны

Вопрос:

Я хотел использовать некоторые фиктивные данные в своих представлениях django для работы с шаблонами. Когда переменная posts находится вне домашней функции, все, что я получаю, — это пустое тело. Хотя, когда я перемещаю ее внутрь, все отображается так, как должно.

 from django.shortcuts import render
posts = [
    {
        'author': 'Kamil', 
        'title' : 'Post 1',
        
    }, 
    {
        'author': 'Tomek', 
        'title' : 'Post 2',
    }, 
]

def home(request):
    context = {
        'posts' : posts
    }
    return render(request, 'blog_app/home.html', context)
 

Вот также мой html

 <!DOCTYPE html>
<html>
    <head>
        <title></title>
    </head>

    <body>
        {% for post in posts %}
            <h1>{{ post.title }}</h1>
            <p>By {{ post.author }}</p>
        {% endfor %}
    </body>
</html>
 

Ответ №1:

Сделайте сообщения глобальной переменной

 global posts

posts = [
    {
        'author': 'Kamil', 
        'title' : 'Post 1',
        
    }, 
    {
        'author': 'Tomek', 
        'title' : 'Post 2',
    }, 
]
 

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

1. он выдает ошибку SyntaxError: недопустимый синтаксис

2. извините! Я обновил свой ответ, пожалуйста, проверьте. Глобальные переменные не могут быть объявлены и определены одновременно. Предполагается, что они должны быть объявлены и определены отдельно.

3. Omg я не понимал, что у меня есть функция с тем же именем в этом файле