当我尝试用英语以外的任何语言搜索时,服务器错误(500)



我希望在搜索栏中支持所有语言的搜索,但当我写一个阿拉伯语单词时,它会显示

服务器错误(500(

我的代码|Models.py:

class Homepage(models.Model):
name = models.CharField(max_length=50,default="")
app_contect = models.CharField(max_length=240,default="")
page_url = models.URLField(max_length=250,default="")
app_image = models.ImageField(upload_to='images/',null=True, blank=True)
def get_image(self):
if self.app_image and hasattr(self.app_image, 'url'):
return self.app_image.url
else:
return '/path/to/default/image'
def __str__(self):
return self.name

class PCprogram(models.Model):
name = models.CharField(max_length=50,default="")
app_contect = models.CharField(max_length=240,default="")
page_url = models.URLField(max_length=250,default="")
app_image = models.ImageField(upload_to='images/',null=True, blank=True)
post_date = models.DateTimeField(auto_now_add=True, null=True, blank=True)
def get_image(self):
if self.app_image and hasattr(self.app_image, 'url'):
return self.app_image.url
else:
return '/path/to/default/image'
def __str__(self):
return self.name

class Meta:
ordering = ('-post_date',)

views.py:

def search(request):
if request.method == 'GET':
query= request.GET.get('q')
submitbutton= request.GET.get('submit')
if query is not None:
home_database= Homepage.objects.filter(Q(name__icontains=query) | Q(app_contect__icontains=query) | Q(page_url__icontains=query) | Q(app_image__icontains=query))

pcprograms_database= PCprogram.objects.filter(Q(name__icontains=query) | Q(app_contect__icontains=query) | Q(page_url__icontains=query) | Q(app_image__icontains=query))

results = list(
sorted(
chain(pcprograms_database,home_database),
key=attrgetter('name'),
reverse=True  # Optional
))
paginator = Paginator(results,6)
page = request.GET.get('page')
results = paginator.get_page(page)
context={'results': results,
'submitbutton': submitbutton}
return render(request, 'html_file/search.html', context)
else:
return render(request, 'html_file/search.html')
else:
return render(request, 'html_file/search.html')

html页面中的搜索表单:

<form id="search_form" action="{% url 'search' %}" method="GET" value="{{request.GET.q}}" class="form-inline">
<input id="search_box" type="text" name="q"
placeholder=" Search For ... "
style="color:black"
class="form-control mr-sm-2"/>
<input class="btn btn-outline-text-white my-2 my-sm-0" id="search_button" type="submit" name="submit" value="Search"/>
</form>

我尝试添加charset=";utf-8";形式上,但不起作用。

我还尝试在models.py的第一行添加#--coding:utf-8--,但也不起作用。

我正在使用MySQL数据库

看起来MySQL表字符集有问题。它们无法存储阿拉伯语文本,需要更改为utf-8,例如,请参阅MySQL数据库中的"以阿拉伯语保存数据"。

如需有关转换的帮助,请参阅本文:https://www.a2hosting.com/kb/developer-corner/mysql/convert-mysql-database-utf-8.

最相关的部分:
终端内:

$ set DBNAME=<my_database_name>
$ mysql --database=DBNAME -B -N -e "SHOW TABLES" | awk '{print "SET foreign_key_checks = 0; ALTER TABLE", $1, "CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; SET foreign_key_checks = 1; "}' | mysql --database=DBNAME

在MySQL查询中:

ALTER DATABASE <my_database_name> CHARACTER SET utf8 COLLATE utf8_general_ci;

最新更新