视图中的错误 python django

Posted

技术标签:

【中文标题】视图中的错误 python django【英文标题】:error in view python django 【发布时间】:2014-08-04 07:53:53 【问题描述】:
def projectDetail(request):
    data = 'error':''
    projects = Project.objects.all()
    if len(projects) == 0:
        data['error']='NO Project Information Available'
        html ="<html><body>%s</body></html>"%data['error']
        return HttpResponse(html)
    project = projects[0]
    html ="<html><body><ul>Project Description \
              <li>Project Name:"+project.name+"</li>\
              <li>Project Phase:"+ project.phase+"</li>\
              <li>Project City: "+ project.city+"</li>\
              <li>Project Description:"+project.description+"</li>\
              <li>Builder Name:"+ project.builders.all()[0].name+"</li>\
              <li>Builder Description:"+ project.builders.all()[0].description+"</li>\
              <li>Builder Type:"+ project.builders.all()[0].builder_type.name+"</li>\
              </ul></body></html>"
    return HttpResponse(html)

这是我的代码,当我请求这个视图时,我得到了错误:

Exception Type: TypeError
Exception Value:    
coercing to Unicode: need string or buffer, City found

解决办法是什么

【问题讨论】:

【参考方案1】:

该错误将来自此行:

<li>Project City: "+ project.city+"</li>\

您可能需要在 City 模型上添加 __str____unicode__ 方法。

也就是说——你真的不应该建立这样的 HTML 响应——改用Django's template engine。 Part 3 of the Django tutorial 可能会帮助您从这里开始。

【讨论】:

【参考方案2】:
 projects = Project.objects.all()

它是一个迭代器对象,您需要对其进行迭代才能获得项目详细信息。 对于项目中的项目: 项目.city 项目.你的领域

如果city是不同的表或关系键,则需要定义

 def __str__(self):     # for django 2.* version    
     return self.name 

def __unicode__(self):
     return self.name       # for django 3.* version 

【讨论】:

以上是关于视图中的错误 python django的主要内容,如果未能解决你的问题,请参考以下文章

重定向视图中的 Django NoReverseMatch 错误

带有密码更改视图的模板中的 Django url 错误

urls.py 中的 Django 时区逻辑和通用视图引发错误,但它是视图、字段还是我?

“django 视图中的未知列‘user_id’错误

视图中的 Django 导入错误 - 没有名为“x”的模块

在 django 中处理视图语法错误与异常