/ / 403(禁止)djangoビューにJQuery POSTを試行する場合-jquery、django、django-views、http-method

djangoビューに対してJQuery POSTを試行すると403(禁止) - jquery、django、django-views、http-method

JQueryPOSTで次の試みをしました。

$(document).ready(function(){
$("#id_go").click(function(){
GOclick();
});
});

function GOclick(){

selected_table = $("#id_TableName option:selected").text();
selected_column = $("#id_ColumnName option:selected").text();
selected_SDT = $("#id_StartDateTime option:selected").text();
selected_EDT = $("#id_EndDateTime option:selected").text();

$.post("/historicaldata/input_parameters/", { selected_table: selected_table, selected_column: selected_column, selected_SDT: selected_SDT, selected_EDT: selected_EDT }, function(data){

});
}

そしてDjangoView.py

if request.method == "POST":
pdb.set_trace()

selectedTable = request.GET.get("selected_table")
selectedColumn = request.GET.get("selected_column")
startDT = request.GET.get("selected_SDT")
endDT = request.GET.get("selected_EDT")

同じスクリプトから同じビューに移動する同等のGETが成功しているので、なぜそうなるのかわかりません。フォームにcrsf_tokenがあります。

回答:

回答№1は1

一見すると、間違ったQueryDictからパラメータを取得しようとしていますが、次のようになります。

request.POST.get(...)

回答№2の場合は1

djangoサーバーに投稿されたフォームを操作するときは、送信する「フォーム」または「フォームデータ」内にcsrf_tokenがあることを確認する必要があります。

フォームのcsrfトークンを表示するには

{{csrf_token}}

これは次のようなものを作成します

<input type="hidden" name="csrfmiddlewaretoken" value="$csrf_token"/>

これをAJAX呼び出しで他のデータと一緒に渡し、jqueryを使用して、フォームの名前と入力の「名前」の名前に基づいて値を取得します。

お役に立てれば。