2017-10-03 16 views
0

特定の文字列をビューからテンプレートに渡すことに奇妙な問題があります。Django - 文字をビューに置き換えた後に文字列をテンプレートに正しく渡す問題

文字列はフォームから生成され、分割可能文字列に後で簡略化するテキストが含まれています。例えば、このフォームデータを取り、今

# views.py 

mystring = myform.cleanedData['mystring'] 
mystring = str(mystring) # convert from unicode 
mystring = mystring.replace("\n", ",").replace("\r\n", ",").replace(" ", ",").replace(";", ",") 

# Then I pass it to the template: 
return render(request, 'html/mytemplate.html', {'mystring': mystring}) 

%15 
%16 

私はちょうどレンダリングする前に、ファイルにのMyStringをプリントアウトした場合ので、私はそうのようなコンマで潜在的な区切り文字に置き換えますテンプレートの場合、次のようになります。

%15,%16 

これまでのところすべて良いです。しかし、問題は、この文字列をテンプレートにレンダリングしようとしていることに起因します。私はこのような文字列を描画しようとした場合:

%15 
,%16 

それは、カンマを保持し、他のいくつかのファンキーなもの、私はドン」追加:

{{ mystring }} 

結果は、これは(先頭のスペースが含まれている)であります私のJSのいくつかがかなり混乱してしまうので、欲しい。 安全フィルタでエスケープしないようにしましたが、この場合は何も変更されていないようです。また、元のフォームデータが既に正しくフォーマットされている場合(つまり、「%15、%16」)、正しく動作し、意図したとおりに文字列を渡すことに注意してください。

アイデア?私は私のビューの中にかなりのログを記録しましたが、テンプレートにレンダリングするまではうまくいくようです。

答えて

1

ここで自分のサンプルコードを見てから、問題の内容を理解しました。

replace("\n", ",")の順番をreplace("\r\n", ",")に交換する必要がありました。後者が最初に発生するようにしました。この問題は、\nエスケープが置換された後に、\r\nの出現を見つけることができず、したがって、\rをすべてテキストに残すことによって発生しました。

関連する問題