我在pythonanywhere.com上託管的Django應用程序不支持utf-8編碼。像'é'這樣的字符會返回錯誤。「utf-8」編碼在開發服務器上工作,但未部署時
瀏覽:
def result_view(request):
if request.method == 'POST':
search = request.POST.get('textfield').encode("utf-8")
print search
try:
try:
value = wikipedia.page(search)
title = value.title
url = value.url
print title
data = wikipedia.summary(search, sentences=10)
except wikipedia.exceptions.DisambiguationError as e:
data = e
title = search + " (Disambiguation)"
u = search.replace(" ", "_")
url = "https://en.wikipedia.org/wiki/" + u
except:
raise Http404()
return render(request, "search/result.html", {'title': title, 'url': url, 'data': data})
else:
return render(request, "search/result.html", {})
的textfield
輸入編碼與UTF-8和工作在Django開發服務器不錯,但在我的pythonanywhere
服務器返回404頁。
模板:
<form name="myform" method="POST" action="{% url 'result' %}">
<div class="form-group">
<div class="input-group">
{% csrf_token %}
<input type="text" class="form-control" name="textfield" placeholder="Search" required/>
<div class="input-group-addon">
<span class="glyphicon glyphicon-search"></span>
</div>
</div>
</div>
<button type="submit" class="btn btn-danger btn-lg ">Search</button>
</form>
我相信你必須允許Pythonanyhere使用的數據庫(它應該是MySQL,但可能已被更改)使用編碼utf-8。 –
你的外嘗試/ except/404吞噬了真正的錯誤。擺脫它,看看日誌中的實際回溯是什麼?它可能不會涉及任何類型的數據庫...... – hwjp