2017-11-08 24 views
0

おはよう! 私は許します許して、私はプログラミングでゼロです。しかし、私は学びたい。ページを更新することなく、POSTメソッドを使用してデータを転送する必要があります。 djangoを通して、javascriptとviews.pyはどのように見えるのですか? "ボタン" にページを更新せずにサーバーからデータを受信

"送信" から "Войти" ボタンのHTML形式のページ最初の変化型で
<form class="form-horizontal" role="form" method="post" id="lol"> 
      <div class="form-group"> 
      <label for="" class="col-sm-2 control-label">ФИО</label> 
       <div class="col-sm-4"> 
      <input name="firstname" class="form-control" placeholder="ФИО"> 
       </div> 
      </div> 
      <div class="form-group"> 
      <label for="" class="col-sm-2 control-label">Шифр Группы</label> 
       <div class="col-sm-4"> 
      <input name="Code" class="form-control" placeholder="Шифр Группы"> 
       </div> 
      </div> 
      <div class="form-group"> 
      <label for="" class="col-sm-2 control-label">Пол</label> 
       <div class="col-sm-4"> 
      <input name="Pol" class="form-control" placeholder="М или Ж"> 
       </div>   </div> 
      <div class="form-group"> 
      <label for="" class="col-sm-2 control-label">Семейное положение</label> 
       <div class="col-sm-4"> 
      <input name="Floor" class="form-control" placeholder="0 или 1"> 
       </div> 
      </div> 
      <div class="form-group"> 
      <label for="" class="col-sm-2 control-label">Номер комнаты</label> 
       <div class="col-sm-4"> 
      <input name="Room" class="form-control" placeholder="Номер комнаты"> 
       </div> 
       </div> 
    <div class="form-group"> 
    <div class="col-sm-offset-2 col-sm-10"> 
     <button type="submit" class="btn btn-default">Войти</button> 
    </div> 
    </div> 
</form> 
<div class="examples"> 

    <script language="javascript" type="text/javascript"> 
    </script> 

    <div class="results">Ждем ответа</div> 

    @csrf_exempt 
def polls(request, form=None): 
    if request.method == 'POST' and form.is_valid(): 
     pass 
    else: 
     return render(request, 'base.html') 
+3

ajax呼び出しを使用します。ボタン(タイプ=ボタン)をクリックし、データを取得し、バックエンドルートにポストし、実行する必要のあるアクション(例えばdbに挿入)を実行し、200または400を返します。成功した場合は、返されたエラーに応じて別の一連のアクションを実行します。 タイプ=ボタンを使用すると、クリックしてフォームを送信しないでください。そうでない場合はsubmitを使用できますが、preventDefaultを使用できます。 私はdjangoでの経験がないので、私が間違っている場合のための例を書くつもりはないが、私が与えたフローを外して、あなたの検索を絞り込むのを助けるべきである – elanor

+1

また、適切にコードします。 HTMLはインデントベースの言語ではありませんが、欠落している終了タグをすぐに識別できるので、HTMLの適切なインデントに従うことは非常に便利です。 – elanor

+0

ようこそ。時間をかけて[ask]とそれに含まれるリンクを読んでください。 – wwii

答えて

0

<div class="col-sm-offset-2 col-sm-10"> 
    <button type="submit" id="submit_button" class="btn btn-default">Войти</button> 
</div> 

すべての入力要素にIDタグを追加します。例えば

<input name="firstname" id="firstname" class="form-control" placeholder="ФИО"> 
<input name="Code" id="Code" class="form-control" placeholder="Шифр Группы"> 

は、次に次に次にあなたのアプリでurls.pyファイルを作成ジャンゴ

urlpatterns = [ 

    url(r'',include('YourAppName.urls')), 
] 

のurls.pyファイルを投影するこの行を追加しますhtmlページ

<script type="text/javascript"> 
    $('#submit_button').click(function(){ 

     $.ajax({ 
      url: '/submit/', 
      data: { 
      'firstname': $("#firstname").val(), 
      'Code': $("#Code").val(), 
      // and all other input element 

      }, 
      type: 'post', 
      cache: false, 

      success: function (data) { 
      if (data.status) 
      { 
      alert('Post method'); 
      } 
      else{ 
       alert('error') 
      } 
      } 

     }); 


    }); 
</script> 

にスクリプトを追加しますディレクトリと追加します

from django.conf.urls import url 
from . import views 

urlpatterns = [ 
    url(r'^submit/', views.get_ajax_request, name='ajaxPost'), 
] 

あなたのコードは次のようになります

import json 
from django.shortcuts import HttpResponse 
from django.core.serializers.json import DjangoJSONEncoder 

def get_ajax_request(request): 

    room = request.POST.get('Room') # get html element value by name tag of element 
    ############## 
    Your Operation 
    ############## 

    response = {'status':True,'msg':'Success'} 
    return HttpResponse(json.dumps(response, cls=DjangoJSONEncoder)) 
関連する問題