如何在Django中将视图功能与两个模板连接起来?

问题描述 投票:0回答:1

在我的一种观点中,我有一个功能,它可以带来一些用户的一些信息。可以说,在模板(模板A)中,用户显示在表上,每个用户都有一个按钮。如果单击该按钮,您将被重定向到另一个模板(模板B)。我想做的是,当您单击按钮并将您发送到另一页时,我想显示该用户的信息。我该怎么办?

此外,用户在第一页中是随机的。我想将按钮和用户相关联,并在第二页中显示该用户的信息(一旦您单击它)

django function templates view hyperlink
1个回答
0
投票

您将需要2个视图,一个用于users,另一种用于user_detail。在第一个视图模板中,您应该创建指向第二个视图的链接。

用户视图(结帐django class based views ::

# 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})

和用户详细信息视图:

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 dispatcher):

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 template language以及djngo url template tag

user_detail.html可能看起来像:

<ul>
   <li>id: {{ user.id }}</li>
   <li>username: {{ user.username }}</li>
   <li>name: {{ user.first_name }}</li>
</ul>
© www.soinside.com 2019 - 2024. All rights reserved.