【发布时间】:2023-03-16 20:58:01
【问题描述】:
我在 pythonanywhere.com 上托管的 Django 应用程序不支持 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。
-
您的外部 try/except/404 正在吞噬真正的错误。摆脱它,看看日志中的实际回溯是什么?它可能与任何类型的数据库无关......
标签: python django encoding utf-8 pythonanywhere