Как связать функции представлений с двумя шаблонами в django? - PullRequest
0 голосов
/ 29 марта 2020

В одном из моих представлений у меня есть функция, которая приносит некоторую информацию о некоторых пользователях. Допустим, в шаблоне (шаблон A) пользователи отображаются в таблице, и у каждого из них есть кнопка. Если вы нажмете кнопку, вы будете перенаправлены на другой шаблон (шаблон B). Что я хочу сделать, так это то, что когда вы нажимаете на кнопку и отправляете вас на другую страницу, я хочу отображать информацию об этом пользователе. Как мне это сделать?

Кроме того, пользователи случайны на первой странице. Я хочу связать кнопку и пользователя и отобразить информацию об этом пользователе на второй странице (как только вы нажмете на нее)

1 Ответ

0 голосов
/ 29 марта 2020

вам понадобится 2 просмотра, один для users, а другой для user_detail. в первом шаблоне представления вы должны создать ссылки на второй.

представление пользователей (оформление заказа django представления на основе классов ):

# import other things like User model

# render shortcut to render template
from django.shortcuts import render

# this is class bassed view
from django.views import View


class UsersView(View):
    # your template path (TemplateA in your case)
    template_name = 'users.html'

    # on get method
    def get(self, request):
        users = User.objects.all()  # you may do something else to get data
        return render(request, self.template_name, {'users': users})

и сведения о пользователе view:

class UserDetailView(View):
    template_name = 'user_detail.html'

    def get(self, request, id):
        user = User.objects.get(pk=id)
        return render(request, self.template_name, {'user': user})

ваш urls.py (оформить заказ django Диспетчер URL ):

from django.urls import path
from .views import UsersView, UserDetailView

urlpatterns = [
    path('users/', UsersView.as_view(), name='users'),
    path('users/<int:id>/', UserDetailView.as_view(), name='user_detail'),
]

наконец ваш users.html должен иметь ссылку на другой представление:

{% for user in users %}
    <p><a href="{% url 'user_detail' user.id %}">{{ user.username }}</a></p>
{% endfor %}

мы отправляем user.id как id в user_detail представление. оформить заказ django язык шаблонов , а также djn go тег шаблона URL

user_detail.html может выглядеть следующим образом:

<ul>
   <li>id: {{ user.id }}</li>
   <li>username: {{ user.username }}</li>
   <li>name: {{ user.first_name }}</li>
</ul>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...