2016-04-13 4 views
0

Javascriptフォームからデータを取得する際にDjangoに問題があります。ここに私のJavascriptコードは、私はしかし、私はPOSTが動作することができませんでしたGETを使用することが理想的ではありません知っている...GETフォームデータへのアクセス - DjangoのJavascriptフォーム

function save() { 
    var form = document.createElement("form"); 
    console.log(form); 
    form.setAttribute('method', 'get'); 
    form.setAttribute('action', '/quiz_score/'); 
    document.body.appendChild(form); 
    var i = document.createElement("input"); 
    i.setAttribute('name', 'Score'); 
    i.setAttribute('value', ""+score); 
    form.appendChild(i); 
    var i = document.createElement("input"); 
    i.setAttribute('name', 'csrfmiddlewaretoken'); 
    i.setAttribute('value', '{{ csrf_token }}'); 
    form.appendChild(i); 
    form.submit(); 
} 

あり、それは単に目的のページにリダイレクトされません。私は単に私がPythonでそれを使用することができるようにスコア変数を取得しようとしています

class QuizScoreView(TemplateView): 
template_name = "quiz_score.html" 


def quiz_score(self, request): 
    # Quiz.objects.create(username= ,score=) 
    print("Score: "+request.body) 

はここに...私のジャンゴクラスや関数です。

さらに詳しい情報が必要な場合は、次の質問に追加してください。

+0

あなたがここで何を求めているのかは不明です。 'quiz_score'メソッドとは何ですか?それを何と呼びますか? –

答えて

1

私はそれは、次のHTML/JavaScriptを使用して動作するようになった:

<html><body> 
<button onclick="save();">click me</button> 
<script> 
function save() { 
    var form = document.createElement("form"); 
    console.log(form); 
    form.setAttribute('method', 'get'); 
    form.setAttribute('action', '/quiz_score/'); 
    document.body.appendChild(form); 
    var i = document.createElement("input"); 
    i.setAttribute('name', 'Score'); 
    i.setAttribute('value', "+score"); 
    form.appendChild(i); 
    var i = document.createElement("input"); 
    i.setAttribute('name', 'csrfmiddlewaretoken'); 
    i.setAttribute('value', '{{ csrf_token }}'); 
    form.appendChild(i); 
    form.submit(); 
} 
</script> 
</body></html> 

ビュー:

from django.shortcuts import render 

def quiz_score(request): 
    context = {'score': request.GET['Score']} 
    return render(request, 'quiz_score.html', context=context) 

urls.py:

url(r'^quiz_score/$', quiz_score) 

私はあなたが持っているあなたのJavaScriptで気づきましたi.setAttribute('value', ""+score);。多分それはi.setAttribute('value', "+score");またはそれに類するものであるはずですか?

私はストレートファンクションビューを使用しました。 TemplateViewと関数ベースのビューの興味深い組み合わせがあります。

from django.views.generic import TemplateView 

class QuizScoreView(TemplateView): 
    template_name = 'quiz_score.html' 

    def get(self, request, *args, **kwargs): 
     context = self.get_context_data(**kwargs) 
     context['Score'] = request.GET['Score'] 
     return self.render_to_response(context) 

urls.py:

url(r'^quiz_score/$', QuizScoreView.as_view()) 

希望に役立ちますあなたがTemplateViewを使用したい場合は、あなたのような何かを行うことができます!

+0

ありがとう!これはうまくいく! –