2017-11-16 3 views
1

にJavaScriptにビューコンテキストを介してデータを渡します。誰も私はこれを解決する方法を知っていますか? views.pyは、私はテンプレートにviews.pyからいくつかのデータを渡すためにしようとJavaScriptでそれを使用して、私はそれを動作させることはできませんよジャンゴ

listaUsuarios = User.objects.values_list('username', flat=True) 
context = {'listaUsuarios':listaUsuarios} 

return render(request, redirect, context) 

これは実際に動作し、私はprint(listaUsuarios[2])を行う場合には、データベース内だけでユーザ名番号2を示しています。

テンプレート内のJavaScript

function checkForm(form) 
{ 
for (i = 0; i < listaUsuarioss.length; i++) { 
    if(form.username.value==listaUsuarioss[i]){ 
alert("Error: El nombre de usuario ya está en uso"); 
     form.username.focus(); 
return false; 
} 
} 
} 

<form method="post" action="{% url 'register' %}" onsubmit="return checkForm(this,{‌{listaUsuarios}});"> 

は私が登録のためにDjangoのフォームを使用している必要がありますが、私はしませんでしたし、私がしようとしている知っているスクリプトの呼び出しそのユーザー名が既に使用されている場合は、新しいユーザーの登録前に確認するためにこの作業を行います。

ありがとうございました!

+2

私は最初のjavascriptリストにlistaUsuariosを割り当て、反復と思います。特別なテンプレート構文を使用する必要があります – Stack

答えて

3

あなたのJavaScriptは、Djangoのテンプレート変数にアクセスすることができません。リストをJSONとして送信し、JSで解析し、そこのローカル変数に結果を代入する必要があります。

context = {'listaUsuarios': json.dumps(list(listaUsuarios))} 

...

function checkForm(form) { 
    var listaUsuarios = JSON.parse({{ listaUsarios|safe }}); 
    ... 
+0

ありがとう!それはまだ動作していない、それはJavaScriptが解決されたときにコンテキストがテンプレートにないためである可能性がありますか?私はこのエラーを受け取ります: (1062、 "重複したエントリ 'ユーザー'キー 'ユーザー名'") –

+0

いいえ、このエラーはこのコードとは何の関係もない可能性があります。 –

+0

javascriptがうまくいけば、postメソッドを停止する必要があり、そのエラーは表示されないので、ユーザー名のリストの周りに何かがあると思います。 –

関連する問題

 関連する問題