django在view返回结果没问题是中文,在模板返回的是unicode编码为啥

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django在view返回结果没问题是中文,在模板返回的是unicode编码为啥相关的知识,希望对你有一定的参考价值。

参考技术A #coding=UTF-8
就可以的,如果还不行,就用纪事本打开文件然后另存为是 选择用UTF-8编码
然后上传
Django的内核是UTF-8的编码方式所以要避免乱码请注意一下几点:
1.数据库中的编码方式要是UTF-8的。
2.代码中View里面的最上面加上
# -*-coding:utf-8 -*-
可以防止模板出现乱码
3.代码中出现中文字符的地方请在本代码文件的最上面加入
# -*-coding:utf-8 -*-
可以避免代码文件出现乱码。

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

【中文标题】在 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在view返回结果没问题是中文,在模板返回的是unicode编码为啥的主要内容,如果未能解决你的问题,请参考以下文章

Django 自定义模板标签不返回任何值

django-设计模式

如何在 django 的同一页面上返回结果?

Python Django设计模式及模板层

Python Django设计模式及模板层

parseJSON在django模板的ajax成功回调函数中返回null