Django项目的分发与本地项目不同。 我有一个Django项目,其中有一个创建APIView,在我的本地仓库中,它工作正常,但当我将回购推送到遥控器时,然后用
运行它 screen -d -m python3 -m Qy.wsgi
如果我访问了创建网址,则出现500 Server Error
错误。
但是在我当地的回购中,它运作正常。
相关代码如下:
模型:
class Currency(models.Model):
name = models.CharField(max_length=16)
desc = models.CharField(max_length=128, null=True, blank=True)
standard_symbol = models.CharField(max_length=8)
ex_rate = models.DecimalField(decimal_places=4, default=0.0000, max_digits=10)
class Meta:
ordering = ['-standard_symbol']
def __str__(self):
return self.name
def __unicode__(self):
return self.name
apiview:
class CurrencyCreateAPIView(CreateAPIView):
serializer_class = CurrencySerializer
permission_classes = [IsSuperAdminOrFinanceAdmin]
queryset = Currency.objects.all()
串行器:
class CurrencySerializer(ModelSerializer):
class Meta:
model = Currency
fields = "__all__"
我只是不知道为什么在发行版中它不能用汉字创作。
我的意思是如果我写所有数字,例如:
name: 123, desc: 123, standard_symbol: 123, ex_rate:1233
它将创造成功。
或者如果有英文字符也可以,但如果有汉字,它会报告500 Server Error
。我使用MySQL作为数据库。
但是在本地仓库中,如果它包含中文字符,它将起作用。
远程仓库代码与本地仓库相同。
我的本地回购操作系统:MacOS
我的远程仓库操作系统:CentOS7.2
EDIT-1
我wsgi.py
的设置如下:
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "qy.settings")
import django
print("django.setup()")
django.setup()
from socketio import Middleware
from qysio.views import sio
django_app = get_wsgi_application()
application = Middleware(sio, django_app)
import eventlet
import eventlet.wsgi
eventlet.wsgi.server(eventlet.listen(('', 8000)), application)
修改-2
我在settings.py中设置DEBUG=True
,编辑时出现波纹管错误(与使用创建相同):
OperationalError at /api/productconfig/price_system/currency/1/edit/
(1366, "Incorrect string value: '\\xE4\\xBA\\xBA\\xE6\\xB0\\x91...' for column 'name' at row 1")
答案 0 :(得分:0)
我看到了您的错误1366, "Incorrect string value:
。
有一个着名的charset错误错误。
因此,请确保您的数据库和表使用utf-8
字符集。
你可以使用
SHOW CREATE DATABASE your_database_name;
ALTER DATABASE your_database_name DEFAULT CHARACTER SET utf8;
检查并更改数据库字符集。
使用bellow进行检查并更改表格的字符集:
SHOW CREATE TABLE your_table_name;
ALTER TABLE your_table_name DEFAULT CHARACTER SET utf8;
并更改您的表字段字符集:
ALTER TABLE `your_table_name` CHANGE `table_field` `table_field ` VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL