2016-08-23 24 views
1

jsでDjangoオブジェクトがNoneであるかどうかを確認しますか?DjangoオブジェクトがjavascriptでNoneであるかどうかをチェックする方法?

私は現在、DjangoオブジェクトまたはNoneを格納する変数personを持っています。私のjsで私は持っています:

if ({{person}} != None) { 
    execute_function({{person}}) 
} 

ここで問題と思われるものはありますか?

+3

の可能性のある重複した[Djangoのテンプレートで "なし" に相当しますか?](のhttp://のstackoverflow。 com/questions/11945321/what-is-the-none-in-none-in-django-templates) – Harrison

+0

'if({{person}}!=" None ")'を試してください。 JavaScriptの代わりにDjango '{%if%}'を使うこともできます。 – elethan

+0

あなたはクライアントサイドのjavadriptでdjangoオブジェクトにアクセスすることはできません – e4c5

答えて

4

ジョン・スミスの答えが最も理にかなって、Djangoのテンプレートでそれを確認してください。実際にはより良い は次のようになります。

{% if person %} 
    execute function 
{% endif%} 

JavaScriptを使用して、それを確認する必要がある場合は、JavaScriptがそうJavaScriptコードはDjangoのHTMLテンプレートでもあることを想定し、代わりなしのヌル使用(および外部ファイルとしてロードされていません)これはうまくいくはずです。

if ({{person}} != null) { 
    execute_function({{person}}) 
} 

編集:

もう少し詳しく追加: おそらくのようなものに解析されます:

if (john != null){ 
    execute_function(john) 
} 

JavaSciptはジョンを理解することはありませんが、それは引用されたバージョンを理解します「ジョン」:

if ('john') != null){ 
    execute_function('john') 
} 

これを達成する最も簡単な方法モデルモデルをPersonモデルに追加することです。そして、テンプレート内

Class Person(models.Model): 
    ...field definitions here. 

    def quoted_name(self): 
     return "'%s'" % self.name 

(と空の文字列はfalseと評価):

if ({{person.quoted_name }}) { 
    execute_function({{person.quoted_name }}) 
} 
+0

まさに私が探していて、何か新しいことを学んだ:) –

+0

実際には、おそらく{{person}}の出力を条件付きで引用する必要があります。そうしないと、JavaScriptは宣言されていない変数として扱います。個人的に私はperson(Django)のモデルメソッドを定義し、{{person}}がテンプレートに出力するものの引用バージョンを返すようにします。 {{person.quoted_name}}かそれに類するものです。 –

+0

引用したバージョンの意味を明確にしたり、例を挙げてください。 –

0

これが私の仕事:

{% if person != None %} 
    var p = ... 
    ... 
{% endif %} 
関連する問題