在 django 中访问传递给模板的过滤器查询结果

Posted

技术标签:

【中文标题】在 django 中访问传递给模板的过滤器查询结果【英文标题】:to access the filter query result passed to templates in django 【发布时间】:2015-08-29 12:55:05 【问题描述】:

我想将过滤器查询结果传递给django中的模板。返回的行的每个字段的详细信息将以可读的形式呈现,就像每一行一样。我正在使用 django 1.8

这是我的 urls.py

url(r'^pendingRegistrations/$',views.pendingApproval, name ='pendingApproval')

这是我的观点.py

from django.shortcuts import render_to_response
from django.http import HttpResponse
from django.template.context_processors import csrf
from django.views.decorators.csrf import csrf_protect
from django.core.mail import send_mail
from django.core import mail
from fcui.models import *
from django.db.models import Q
import urllib
from django.template import Context

@csrf_protect
def pendingApproval(request):


        if request.method == 'POST' :

                return HttpResponse("Post done")

        elif request.method == 'GET' :

                data = request.GET.get('id')
                decode = urllib.unquote_plus(data)

                from encryptData import encryption, decryption
                groupId = decryption(decode)
                print "group id : " + groupId
        #else :

        #       userId = request.user_id
        #       query = account_manager_users.objects.get(user_id = userId)
        #       groupId = query.group_id

        print "group id : " + groupId
        pending_users_list = pending_user_registrations.objects.filter(group_id = groupId)
        print pending_users_list

        c = Context('pending_users_list',pending_users_list)
        c.update(csrf(request))
        return render_to_response('fcui/pendingRegistrations.html',c)

这是我的 .html(存储在模板文件夹的 app 文件夹中)

% block content %

<h1 class="page-header">Pending User Registration Details</h1>


  % if pending_users_list %
        "cmn"
        % for user_details in pending_users_list %
                <form method="POST" action = "/appname/pendingRegistrations/">
                <table>
                <tr>
                <td>First Name : </td><td><input type = "text" name = "firstName" value = "user_details.first_name" readonly></input></t$
                </tr>
                <tr>
                <td>Last Name : </td><td><input type = "text" name = "lastName" value = "user_details.last_name" readonly></input></td>
                </tr>
                <tr>
                <td>User Name : </td><td><input type = "text" name = "userName" value = "user_details.user_name" readonly></input></td>
                </tr>
                <tr>
                <td>Email Address : </td><td><input type = "text" name = "emailAddress" value = "user_details.email_address" readonly></$
                </tr>
                <tr>
                <td>Joining Reason : </td><td><input type = "text" name = "reason" value = "user_details.joining_reason" readonly></inpu$
                </tr>
                </table>
                <br><br>
                <input type ="submit" name = "Submit" value= "Accept" ></input>
                <input type ="button" value= "Reject"></input><br>
                <input type = "hidden" name = "groupId" value = "user_details.group_id" readonly></input>
                % csrf_token %
                </form>

                <br><br><br>

        % endfor %
 % else %
        "not cmn"
 % endif %

但即使 pending_users_list 不为空,屏幕也会显示“not cmn”。为什么会这样?请帮忙。我是 Django 新手。

编辑:

这是我在控制台上看到的:

[&lt;pending_user_registraions: PRIYA GOEL Priya29 shubh@gmail.com invited&gt;]

【问题讨论】:

那么您是说您在控制台中看到了一个非空列表,但在呈现的页面中却“不是 cmn”? @DanielRoseman : 是的.. 你说得对 @DanielRoseman:你能帮忙吗? 您能否准确发布您在控制台中看到的内容? @DanielRoseman : 我已经编辑了帖子,请查看 【参考方案1】:

对于初学者来说,这行似乎有错误:

c = Context('pending_users_list',pending_users_list)

它应该在哪里:

c = Context('pending_users_list': pending_users_list)

注意逗号变成了冒号。

【讨论】:

以上是关于在 django 中访问传递给模板的过滤器查询结果的主要内容,如果未能解决你的问题,请参考以下文章

Django Templates — 将模板中的变量值传递给 templatetags 过滤器

如何将javascript变量传递给django自定义过滤器

如何将javascript变量传递给django自定义过滤器

将视图中的 Django 查询集传递给模板

有啥方法可以将过滤后的查询集传递给 Django 分页?

如何获取与传递给 Django 模板的查询集相关的查询集对象