2016-08-06 6 views
0

HTMLで出席登録テンプレートを用意しました。HTMLページと送信HTMLボタンがあります。送信ボタンをクリックして、データを保存します。私はできません。htmlテンプレートのsubmitボタンがdjangoで動作しません

ISTは任意input要素が定義される前formを従って、閉じているテンプレートに

{% load staticfiles %} 

<!DOCTYPE html> 
<html> 
<head> 
<title>Attendance register</title> 
<style> 
table, th, td { 
    border: 1px solid black; 
    border-collapse: collapse; 
} 
th, td { 
    padding: 5px; 
    text-align: left; 
} 
table#t01 { 
    width: 100%;  
    background-color: #f1f1c1; 
} 
</style> 
</head> 
<body> 
<h1><center><u>ATTENDANCE-REGISTER</u></center></h1><br> 
<h2><center><i>Ist Standard</i></center></h2> 
<h4>Class in-charge: Hema.B <br><br> 
Date: June 2016 - March 2017</h4> 


<form name="demo_form.asp" method="get"> 
<button type="submit" value="continue">Submit</button> 
</form> 

{% if user.is_authenticated %} 
<a href="{% url 'post_new' %}" class="top-menu"><span class="glyphicon glyphicon-plus"></span></a> 
{% endif %} 

<table style="width:100%"> 
    <tr> 
<th>Slno</th> 
    <th>Name</th> 
    <th>Attendance</th> 
    </tr> 
    <tr> 
<td>1</td> 
    <td>Abijith</td> 
    <td><input type="number" id="aNumber"> 
<button onclick="aFunction()"><font color="green">Present</button> 
<button onclick="abFunction()"><font color="red">Absent</button> 
<input type="number" id="abNumber"> 
</td> 
    </tr> 
    <tr> 
<td>2</td> 
    <td>Adithya</td> 
    <td><input type="number" id="bNumber"> 
<button onclick="bFunction()"><font color="green">Present</button> 
<button onclick="acFunction()"><font color="red">Absent</button> 
<input type="number" id="acNumber"></td> 

    </tr> 
    <tr> 
<td>3</td> 
    <td>Bavana</td> 
    <td><input type="number" id="cNumber"> 
<button onclick="cFunction()"><font color="green">Present</button> 
<button onclick="adFunction()"><font color="red">Absent</button> 
<input type="number" id="adNumber"></td> 

    </tr> 
<tr> 
<td>4</td> 
    <td>Bibin</td> 
    <td><input type="number" id="dNumber"> 
<button onclick="dFunction()"><font color="green">Present</button> 
<button onclick="aeFunction()"><font color="red">Absent</button> 
<input type="number" id="aeNumber"></td> 

    </tr> 
<tr> 
<td>5</td> 
    <td>Devan</td> 
    <td><input type="number" id="eNumber"> 
<button onclick="eFunction()"><font color="green">Present</button> 
<button onclick="afFunction()"><font color="red">Absent</button> 
<input type="number" id="afNumber"></td> 

    </tr> 
<tr> 
<td>6</td> 
    <td>Faizal</td> 
    <td><input type="number" id="fNumber"> 
<button onclick="fFunction()"><font color="green">Present</button> 
<button onclick="agFunction()"><font color="red">Absent</button> 
<input type="number" id="agNumber"></td> 

    </tr> 
<tr> 
<td>7</td> 
    <td>Ganga</td> 
    <td><input type="number" id="gNumber"> 
<button onclick="gFunction()"><font color="green">Present</button> 
<button onclick="ahFunction()"><font color="red">Absent</button> 
<input type="number" id="ahNumber"></td> 

    </tr> 
<tr> 
<td>8</td> 
    <td>Haris</td> 

    <td><input type="number" id="hNumber"> 
<button onclick="hFunction()"><font color="green">Present</button> 
<button onclick="aiFunction()"><font color="red">Absent</button> 
<input type="number" id="aiNumber"></td> 
    </tr> 
<tr> 
<td>9</td> 
    <td>Jamsina</td> 

    <td><input type="number" id="iNumber"> 
<button onclick="iFunction()"><font color="green">Present</button> 
<button onclick="ajFunction()"><font color="red">Absent</button> 
<input type="number" id="ajNumber"></td> 
    </tr> 
<tr> 
<td>10</td> 
    <td>Tara</td> 

    <td><input type="number" id="jNumber"> 
<button onclick="jFunction()"><font color="green">Present</button> 
<button onclick="akFunction()"><font color="red">Absent</button> 
<input type="number" id="akNumber"></td> 
    </tr> 


</table> 
<br> 

<body> 
<script> 



function aFunction() { 
    document.getElementById("aNumber").stepUp(); 


} 

function abFunction() { 
    document.getElementById("abNumber").stepUp(); 
} 
function bFunction() { 
    document.getElementById("bNumber").stepUp(); 
} 

function acFunction() { 
    document.getElementById("acNumber").stepUp(); 
} 
function cFunction() { 
    document.getElementById("cNumber").stepUp(); 
} 

function adFunction() { 
    document.getElementById("adNumber").stepUp(); 
} 
function dFunction() { 
    document.getElementById("dNumber").stepUp(); 
} 

function aeFunction() { 
    document.getElementById("aeNumber").stepUp(); 
} 
function eFunction() { 
    document.getElementById("eNumber").stepUp(); 
} 

function afFunction() { 
    document.getElementById("afNumber").stepUp(); 
} 
function fFunction() { 
    document.getElementById("fNumber").stepUp(); 
} 

function agFunction() { 
    document.getElementById("agNumber").stepUp(); 
} 
function gFunction() { 
    document.getElementById("gNumber").stepUp(); 
} 

function ahFunction() { 
    document.getElementById("ahNumber").stepUp(); 
} 
function hFunction() { 
    document.getElementById("hNumber").stepUp(); 
} 

function aiFunction() { 
    document.getElementById("aiNumber").stepUp(); 
} 
function iFunction() { 
    document.getElementById("iNumber").stepUp(); 
} 

function ajFunction() { 
    document.getElementById("ajNumber").stepUp(); 
} 
function jFunction() { 
    document.getElementById("jNumber").stepUp(); 
} 

function akFunction() { 
    document.getElementById("akNumber").stepUp(); 
} 
</script> 
</body> 
</html> 

Views.py

def Ist_std(request): 
    if 'save' in request.POST: 
     form = PostForm(request.POST) 
     if form.is_valid(): 
      post = form.save(commit=False) 


      post.save() 
      return redirect('blog/IInd_std.html', pk=post.pk) 
    else: 
     form = PostForm() 
    return render(request, 'blog/Ist_std.html') 

urls.py

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

urlpatterns = [ 
    url(r'^Ist_std/$', views.Ist_std, name='Ist_std'), 
    ] 
+0

こんにちは、私の古い回答のいくつかを通って、これを整理することができたかどうか疑問に思っていました。 – e4c5

答えて

0

をstd.htmlフォームには表の一部として入力されたデータは含まれません。

終了タグ</form>を終了タグの後のどこかに移動することで修正できます。

さらに、<input>タグはname属性を持たないため、入力要素に入力された値はHTTP要求で渡すことができません。 name属性が入力されたタグに追加されたことを

<tr> 
    <td>1</td> 
    <td>Abijith</td> 
    <td> 
     <input type="number" id="aNumber" name="aNumber"> 
     <button onclick="aFunction()"><font color="green">Present</button> 
     <button onclick="abFunction()"><font color="red">Absent</button> 
     <input type="number" id="abNumber" name="abNumber"> 
    </td> 
    </tr> 

注:たとえば最初のテーブルの行は、のように書くことができます。

他にも問題があるかもしれませんが、これは私にとって際立っています。

編集

もう一つの問題は、ビューデータがPOSTリクエストで送信されることを想定し、しかし、フォームはGETを使用していることです。 method="post"を使用するようにHTMLフォームを変更します。

+0

入力タグに名前属性を追加するにはどうすればいいですか?返信してください – Andrea

+0

終了タグが表の最後の後に修正されている間は、入力を入力できません。 – Andrea

+0

@アンドレア:私の答えを読んでください。名前属性を追加する方法を示します。この外観を自動化したい場合は[e4c5の回答](http://stackoverflow.com/a/38800824/21945)。 2番目のコメントを再入力して、名前属性を追加してから、それが機能するはずです。 – mhawke

2

htmlのようなフォームを手動で生成するべきではありません。私はあなたがすでにジャンゴフォームを見ていることがわかります。次のように提案してもよいでしょう:

<form name="demo_form.asp" method="post"> 
    {% csrf_token %} 
    {{ form.as_p }} 
    <button type="submit" value="continue">Submit</button> 
</form> 

form rendering optionsもたくさんあります。この方法では、フォームの検証が失敗したときに、正しいメッセージが自動的に表示されるようにもなります。

また、GETをPOSTに変更しました。フォームの投稿を使用する方が常に良いです。 {%csrf_token%}を追加しました。これは、csrfミドルウェアがインストールされていない場合にこれを削除します。

+0

Djangoのフォーム生成を使用するための良いアドバイス。この場合、データは変更されるためPOSTを使用する方が良いですが、データが変更されていないため、クエリーフォームはGETにする必要があります。したがって、フォームにはPOSTを使用する方が良いとは限りませんが、しばしばそうです。 – mhawke

+0

Oops @hawke、私は私の答えでこれを追加しました。また、GETをPOSTに変更したことにも注意してください。フォームのポストを使い、コードフラグメントでそれを変更することを忘れてしまったのはいつですか? – e4c5

+1

を指摘してくれてありがとうございましたが、それはあなたの答えを改善してくれてうれしいです。私の主張は、POSTがフォームのために使用されるべきではないということです。データベースを更新するのではなく、データベースを照会するときに使用します。 – mhawke

関連する問題