2017-07-31 3 views
1

私はdjango、nginx、およびgunicornを使用します。Django FileFieldはドイツ語の "Umlaut"(ä、ö、ü)で動作しません

私のモデルでは、生産時にドイツ語の「Umlaute」で動作していないFileFieldがあります。私はファイルをアップロードしようとすると

(ファイルを選択し、 "保存" 押し) "ウムラウト" に/ adminに:開発のWeb上で

UnicodeEncodeError: 'ascii' codec can't encode character '\xe4' in position 27: ordinal not in range(128) 

models.py

class wiki(models.Model): 

    headline = models.CharField(max_length=255) 
    file = models.FileField(null=True, blank=True) 

    def __str__(self): 
     return self.headline 

サーバーはローカルマシン(./manage runserver)上で正常に動作しているので、これはgunicornまたはnginxと何か関係があり、成功なしに以下の変更を行いました:

/etc/systemd/system/gunicorn.se rvice:

(LANG = de_DE.UTF-8 --env追加)

[Unit] 
Description=gunicorn daemon 
After=network.target 

[Service] 
User=django 
Group=www-data 
WorkingDirectory=/opt/django/project 
ExecStart=/opt/django/bin/python3 /opt/django/bin/gunicorn --env LANG=de_DE.UTF-8 --workers 3 --bind unix:/opt/django/gunicorn.sock uhd.wsgi:application 

[Install] 
WantedBy=multi-user.target 

の/ etc/nginxの/サイト利用可能/ドメイン

server { 
    charset UTF-8; 
} 

ここでは、私は考えていくつかの情報があります役に立つかもしれない:

$ロケール

LANG=C.UTF-8 
LANGUAGE= 
LC_CTYPE="C.UTF-8" 
LC_NUMERIC="C.UTF-8" 
LC_TIME="C.UTF-8" 
LC_COLLATE="C.UTF-8" 
LC_MONETARY="C.UTF-8" 
LC_MESSAGES="C.UTF-8" 
LC_PAPER="C.UTF-8" 
LC_NAME="C.UTF-8" 
LC_ADDRESS="C.UTF-8" 
LC_TELEPHONE="C.UTF-8" 
LC_MEASUREMENT="C.UTF-8" 
LC_IDENTIFICATION="C.UTF-8" 
LC_ALL=C.UTF-8 

猫の/ etc/* - 私は任意の助けに感謝

PRETTY_NAME="Debian GNU/Linux 8 (jessie)" 
NAME="Debian GNU/Linux" 
VERSION_ID="8" 
VERSION="8 (jessie)" 
ID=debian 
HOME_URL="http://www.debian.org/" 
SUPPORT_URL="http://www.debian.org/support" 
BUG_REPORT_URL="https://bugs.debian.org/" 

リリース。より多くの情報が必要な場合は、私にお知らせください。

+0

のPython 2.xの権利をリリース? 'def __str __(self):'は 'def __unicode __(self):' – allcaps

+0

でなければなりません。実際にはPython 3.5.3が開発環境に、Python 3.4.2が実運用環境にあります。 –

+0

私は、なぜ開発者がprdとdevのために2つの異なるPythonを使いたいのか分かりません。あなたの場合、それはあなたの問題に関連する可能性は低いです。しかし、それは悪い習慣です。複数のPythonをインストールすることは難しくありません。開発と生産**を正確に**同一に保つことは難しくありません。 – allcaps

答えて

0

私はDebian Jessie(oldstable)からDebian Stretch(stable)にアップグレードしましたが、今はすべて動作しています。

PythonがPython 3.4.2からPython 3.5.3にアップグレードされました。 $ロケールは引き続き同じ出力を出力しますが、gunicornとnginxはまだ質問に表示されているものと同じです。

$猫の/ etc/* -

PRETTY_NAME="Debian GNU/Linux 9 (stretch)" 
NAME="Debian GNU/Linux" 
VERSION_ID="9" 
VERSION="9 (stretch)" 
ID=debian 
HOME_URL="https://www.debian.org/" 
SUPPORT_URL="https://www.debian.org/support" 
BUG_REPORT_URL="https://bugs.debian.org/" 
関連する問題