私はdjangoと名前と値の外部リストを扱っています。私は自分のhtmlテンプレートにいくつかの値を表示しようとしているカスタムテンプレートタグを使用しています。Pythonループがdjangoテンプレートの特殊文字で壊れます
names.txt
hello 4343.5
bye 43233.4
Hëllo 554.3
whatever 4343.8
マイテンプレートタグは、この(変数の簡素化名)のようになります:
# -*- coding: utf-8 -*-
from django import template
register = template.Library()
@register.filter(name='operation_name')
def operation_name(member):
with open('/pathtofile/member.txt','r') as f:
for line in f:
if member.member_name in line:
number = float(line.split()[1])
if number is not member.member_number:
member.member_number = number
member.save()
return member.member_number
return 'Not in List'
ここ
は、リストがどのように見えることができるものの一例ですスペシャルcharがないエントリでもうまく動作します。しかし、member.member_namesの名前に特殊文字があると、それは停止します。したがって、member.member_namesがHëlloの場合、スクリプト全体が停止します。私は何も返すことができません。これは私を夢中にさせている。特別な文字のない名前であっても、特殊な文字を含む名前が表示された後は表示されません。
私は何か助けていただきありがとうございます。
EDIT:
だから、これはトリックでした:
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
をしかし、これは良い解決策である場合、私は知りません。
このコードはテンプレートフィルタには何をしているのですか?なぜファイルからメンバオブジェクトを作成するのがディスプレイロジックの責任ですか? –
私はdjangoを初めて使っています。だから多分それは意味をなさない。テキストファイルの数字がデータベースのエントリと異なるかどうか(テキストファイルは毎日更新されます)を確認したい場合は、新しい値を表示します。これは、通常の名前を意図して動作します。 – kingardox
比較中に特殊文字を無視しますか? –