这是我的表格:
<form action = "/search/" method = "get">
<input type = "text" name = "q">
<input type = "submit" value = "Search">
</form>
这是我的观点:
def search(request):
if 'q' in request.GET:
message = 'You searched for: %r' % request.GET['q']
else:
message = 'You submitted an empty form :('
return HttpResponse(message)
当我尝试输入一些东西时,一切正常,除了奇怪的你的东西。例如,当我输入asdasda时,我得到输出You searched for: u'asdsa'
。另一个问题是,当我提交一个空表单时,输出只是u''
,当它应该是“你提交了一个空表单:(”。我正在阅读“The Django Book”,1.xx版本和这是一个例子..
答案 0 :(得分:3)
“怪异的东西”是一个unicode字符串。您可以在此处阅读:http://docs.python.org/tutorial/introduction.html#unicode-strings
我猜测,因为用户按下了提交,你得到一个空q值(u'')的请求,因为用户没有输入任何东西。这是有道理的,对吗?您应该更改if语句以检查此空unicode字符串。
答案 1 :(得分:2)
对于第一个问题,请尝试使用%s
代替%r
。你正在做的是'原始'格式化,当字符串是unicode时,它会告诉你。正常的字符串格式化只会复制没有“u”或引号的值。
对于第二个问题,文本输入将始终具有字典中的键。不要使用if
语句,请尝试:
if request.GET['q'] != "":
测试字符串是否为空。
答案 2 :(得分:1)
'q',在这种情况下恰好是空的。试试这个,在提交空查询时显示错误消息:
if 'q' in request.GET and request.GET['q'] != '':
答案 3 :(得分:1)
奇怪的u
归因于调用%r
的{{1}} - 使用repr
。
%s