【问题标题】:How to connect the views functions with two templates in django?如何将视图功能与 django 中的两个模板连接起来?
【发布时间】:2020-03-29 00:06:27
【问题描述】:

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

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

【问题讨论】:

    标签: django function templates view hyperlink


    【解决方案1】:

    您将需要 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 languagedjngo url template tag

    user_detail.html 可能看起来像:

    <ul>
       <li>id: {{ user.id }}</li>
       <li>username: {{ user.username }}</li>
       <li>name: {{ user.first_name }}</li>
    </ul>
    

    【讨论】:

    • 很高兴听到这个消息!! @add 所以请您将问题标记为SOLVEDUPVOTE 以便其他人也能发现它有用吗?你可以在这里找到如何做:stackoverflow.com/help/someone-answers
    猜你喜欢
    • 1970-01-01
    • 2017-09-18
    • 1970-01-01
    • 2020-03-27
    • 2011-02-25
    • 1970-01-01
    • 2011-02-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多