2

モデルの一部のフィールド (mysql db を介して) は、アクセスすると u'\x00' を返します。django テンプレートでこれを検出したいと考えています。ここに私が見るものがあります:

(Pdb) patient.address.fax
u'\x00'

テンプレートで次のことをしようとしています...

{% if person.address.fax != u"\x00"  %}
   <abbr  class="icon-print" title = "Phone"> </abbr>  {{person.address.fax}} </br> 
{% endif %}

上記のテンプレート コードで次のエラーが発生します。

Could not parse the remainder: '"\x00"' from 'u"\x00"'

基本的に、person.address.fax = u'\x00' の場合、FAX 番号を印刷したくありません。どうすればいいですか?

バックグラウンド:

を使用して MSSQL DB をエクスポートしbcp、データを MySQL にインポートします。emacs で MSSQL からエクスポートされたデータを見ると、大量の "^@" (引用符なし) が含まれています。このファイルをインポートした後、この ^@ が \x00 (NULL 文字?) として表示されるようです。おそらく、MSSQL がこれを別の方法でエクスポートするのを防ぐ何らかの方法がありますが、それは私にとっては複雑になるので、むしろ上記の質問に対する答えが欲しいです。

4

2 に答える 2

0

u'\x00'次のように、比較対象のコンテキスト変数として渡すことができます。

#!/usr/bin/env python2.7

from __future__ import print_function

from django.template import Template, Context
from django.conf import settings

settings.configure()

c = Context({'null': u'\x00', 'dbresult': u'\x00'})

t = Template(r"""
{% if dbresult == null %}
result is null
{% else %}
result is {{ dbresult }}
{% endif %}
""")

print(t.render(c))

正しく印刷されresult is nullます。

于 2013-08-05T02:21:48.880 に答える