Django представление возвращает данные

У меня есть представление, которое возвращает HTML response с помощью render. Возвращаемые данные специфичны для шаблона.

Если я хочу использовать эти данные на другой странице, я должен написать другое представление с той же логикой, или есть способ передать данные из представления 1 в представление 2

view return render(request, 'pages/project_details.html', {"project": project,

урлы path('show_project_details/<project_id>', view=show_project_details, name="show_project_details"),

Я знаю, что view - это просто функция, которая принимает запрос и что-то с ним делает, но я не понимаю, как мне сделать запрос к представлению в шаблоне и получить ответ в существующей странице.

Пример здесь:

## filename: views.py

from django.shortcuts import render
from .models import Team

def index(request):
    list_teams = Team.objects.filter(team_level__exact="U09")
    context = {'youngest_teams': list_teams}
    return render(request, '/best/index.html', context)

Я хочу вернуть данные внутри этого context в home.html и index.html.

Надеюсь, это имеет смысл?

Вы можете использовать ваш urls.py для передачи переменных через нотацию URL.

Например - Получение информации о команде:

шаблон

{% for team in youngest_teams %}
    <a href="{% url 'get_team_info' team.id %}">Team</a>
{% endfor %}

url.py

path('team_info/<team_id>', view=team_info, name="get_team_info")

views.py

def team_info(request, team_id=None):
    team = Team.objects.get(id=team_id) #Information on team is passed.

В вашем случае есть несколько случаев. Позвольте мне объяснить их один за другим. Допустим, у вас есть два шаблона. Один - это шаблон 1, а другой - шаблон 2.

  1. Если вы хотите использовать одну и ту же логику для шаблона 1 и шаблона 2. Вы можете использовать переменную в views.py & url.py и использовать там условие на эту переменную, которая в вашем случае является team_id. Например,
def index(request, team_id):
    list_teams = Team.objects.filter(team_level__exact="U09")
    context = {'youngest_teams': list_teams}
    if team_id == 1:
         return render(request, '/best/index.html', context)
    elif: team_id == 2:
         return render(request, '/best/template2.html', context)

А в urls.py можно написать:

path('team_info/<int:team_id>', view=team_info, name="get_team_info")
  1. Если вам не нужна переменная в представлениях и URL. Тогда вы можете написать разные представления с одним и тем же кодом в views.py. Но в случае с несколькими идентификаторами это приведет к дублированию кода.
Вернуться на верх