0

django テンプレート フィルターに渡す必要がある文字列があります。しかし、文字列だけでは、django モデルは関与していません。これが問題の原因だと思います。

var pk = "123";
var age = "{{ pk|pk_into_age }}";

私のdjangoテンプレートフィルターコードでは:

def pk_into_age(pk):
    timestamp = Model.objects.get(pk=int(pk)).timestamp
    return humanizeTimeDiff(timestamp) // Ex: "5 hours ago"
return timestamp

ただし、これは機能していません。エラーは、「pk」値が空の文字列「」であることです。これはそうではありません。上から pk 文字列リテラルを取得していません。

助けてくれてありがとう

4

2 に答える 2

1

テンプレート フィルターを間違った方法で呼び出しています。以下を参照してください: javascript 変数をテンプレート フィルターに渡すことはできません。変数はコンテキストから渡されます。

<script>
    var age = "{{ pk|pk_into_age }}";
</script>

pkコンテキストに変数が存在すると仮定します。または、pk 値を次のようにハードコーディングします。

var age = "{{ '123'|pk_into_age }}";
于 2012-12-29T20:40:09.220 に答える
0

テンプレートはサーバー側で生成されますが、javascript はクライアント側で実行されるため、テンプレート フィルターで javascript 変数を使用することはできません。

私の知る限り、サーバーと再度通信せずにこの問題を回避する方法はありません。

したがって、javascript 変数をテンプレート フィルターに渡すには、たとえば ajax リクエストを使用できます。指定された pk を処理し、必要なデータのみを含む、html ヘッダーなしのプレーンなテンプレートを返す追加のビューを作成します。

または...「ニュース」オブジェクトを取得するためにユーザーと通信する必要がない場合は、ビューで news.age を取得するだけです。

于 2012-12-29T23:55:33.537 に答える