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
这是什么解决方案
答案 0 :(得分:3)
该错误将来自这一行:
<li>Project City: "+ project.city+"</li>\
您可能需要在城市模型上添加__str__
或__unicode__
方法。
那就是说 - 你真的不应该像这样建立HTML响应 - 而是使用Django's template engine。 Part 3 of the Django tutorial可能会帮助您从这里开始。
答案 1 :(得分:1)
projects = Project.objects.all()
它是一个迭代器对象,你需要迭代它得到项目细节。 项目中的项目: project.city project.your field
如果city是不同的表或关系键,则需要定义
def __str__(self): # for django 2.* version
return self.name
和
def __unicode__(self):
return self.name # for django 3.* version