2013-07-09 85 views
1

我瀏覽過並發現了類似於我的帖子,但是我擁有的所有內容似乎都處於工作狀態,所以我很難過。使用javascript窗體和Django發生問題

我有一個JavaScript代碼片段,將允許用戶選擇兩個建築物之一,然後根據哪個建築物使用不同的選項集給出。這是使用後提交按鈕。到處都表示它與{%csrf_token%}有關,但我已將它包含在表單中,並在settings.py中包含中間件。如果它有所不同,那麼在同一頁面上也有一個獲取請求。

表單

<form id="formname" name="formname" method="POST" action="">{% csrf_token %} 
    <table width="50%" border="0" cellspacing="0" cellpadding="5"> 
     <tr> 
      <td width="41%" align="right" valign="middle">Category :</td> 
      <td width="59%" align="left" valign="middle"> 
       <select name="category" id="category" onchange="javascript: dropdownlist(this.options[this.selectedIndex].value);"> 
        <option value="">Select Building</option> 
        <option value="Marcus">Marcus</option> 
        <option value="Pettit">Pettit</option> 
       </select> 
      </td> 
     </tr> 
     <tr> 
      <td align="right" valign="middle">Location :</td> 
      <td align="left" valign="middle"> 
       <script type="text/javascript" language="JavaScript"> 
        document.write('<select name="subcategory"><option value="">Select Location</option> </select>') 
       </script> 
       <noscript> 
        <select name="subcategory" id="subcategory"> 
         <option value="">Select Location</option> 
        </select> 
       </noscript> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       <td align="left" valign="middle"> 
        <input value="Inventory Safety Log" type="submit"> 
       </td> 
     </tr> 
    </table> 
</form> 

JavaScript的

<script language="javascript" type="text/javascript"> 
function dropdownlist(listindex) { 

    document.formname.subcategory.options.length = 0; 
    switch (listindex) { 

     case "Marcus": 
      document.formname.subcategory.options[0] = new Option("Select Location", ""); 
      document.formname.subcategory.options[1] = new Option("Chemical Room", "Chemicals"); 
      document.formname.subcategory.options[2] = new Option("Supply Room", "Supplies"); 
      document.formname.subcategory.options[3] = new Option("Gas Storage G205", "G205"); 
      document.formname.subcategory.options[4] = new Option("In-Organic Sub Fab G230", "G230"); 
      document.formname.subcategory.options[5] = new Option("Gas Bunker", "Gas Bunker"); 
      break; 
     case "Pettit": 
      document.formname.subcategory.options[0] = new Option("Select Location", ""); 
      document.formname.subcategory.options[1] = new Option("Chemical Room", "Chemicals"); 
      document.formname.subcategory.options[2] = new Option("Supply Room", "Supplies"); 
      document.formname.subcategory.options[3] = new Option("Utility Chase #19", "19"); 
      document.formname.subcategory.options[4] = new Option("Utility Chase #25", "25"); 
      document.formname.subcategory.options[5] = new Option("Utility Chase #29", "29"); 
      document.formname.subcategory.options[6] = new Option("Utility Chase #30", "30"); 
      document.formname.subcategory.options[7] = new Option("Utility Chase #36", "36"); 
      document.formname.subcategory.options[8] = new Option("Utility Chase #44", "44"); 
      document.formname.subcategory.options[9] = new Option("Gas Cage", "Gas Cage"); 
      document.formname.subcategory.options[10] = new Option("Bunker", "Bunker"); 
      break; 
    } 
    return true; 
} 

</script> 

感謝您的任何輸入,意見,建議或見解。

主要問題是,當我嘗試發佈表單時,它將我帶到csrf驗證失敗頁面。

+1

那麼,這是什麼問題?一個附註 - 使用django表單 - 您的生活將變得如此簡單 – karthikr

+0

當我嘗試發佈表單時,它將我帶到csrf驗證失敗頁面。對不起,我會編輯原始帖子以包含它。 – user2482595

+0

我會,但我真的是新的django,並已經在一個非常緊張,幾乎超過最後期限。可以說是在公共汽車下面發生的事情。但是,一旦這一切結束,我計劃在晚些時候完成所有事情,以便我可以全面掌握django。 – user2482595

回答

1

由於篡改表單數據,您正在遇到問題。您需要使用django forms來乾淨地處理它。現在,您可以使用csrf_exempt修飾器作爲臨時解決方法