1

私は自分のものに似た投稿を調べて見つけましたが、私が持っているものはすべて正常に機能しているように見えるので、困惑しています.

ユーザーが2つの建物のいずれかを選択できるようにするjavascriptスニペットがあり、使用されている建物に応じて、異なるオプションのセットが提供されます。これは投稿送信ボタンを使用しています。どこでも {% csrf_token %} に関係していると言われていますが、私はすでにそれをフォームに含めて、settings.py にミドルウェアを持っています。違いがある場合は、同じページに get リクエストもあります。

フォーム

<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 検証に失敗したページが表示されることです。

4

1 に答える 1

1

その場でフォーム データを改ざんしたために問題が発生しています。きれいに処理するには、 djangoフォームを使用する必要があります。csrf_exempt今のところ、一時的な回避策としてデコレータを使用できます

于 2013-07-09T14:43:25.390 に答える