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 新手。
编辑:
这是我在控制台上看到的:
[<pending_user_registraions: PRIYA GOEL Priya29 shubh@gmail.com invited>]
【问题讨论】:
那么您是说您在控制台中看到了一个非空列表,但在呈现的页面中却“不是 cmn”? @DanielRoseman : 是的.. 你说得对 @DanielRoseman:你能帮忙吗? 您能否准确发布您在控制台中看到的内容? @DanielRoseman : 我已经编辑了帖子,请查看 【参考方案1】:对于初学者来说,这行似乎有错误:
c = Context('pending_users_list',pending_users_list)
它应该在哪里:
c = Context('pending_users_list': pending_users_list)
注意逗号变成了冒号。
【讨论】:
以上是关于django在view返回结果没问题是中文,在模板返回的是unicode编码为啥的主要内容,如果未能解决你的问题,请参考以下文章