簡體   English   中英

django將“post”識別為“get”

[英]django recognizing “post” as “get”

所有我的“帖子”行動都被認為是“得到”我已經嘗試了所有我知道的東西來解決這個問題,但似乎一切都井然有序。 提交表單每次都會返回“GET”。

urls.py

from django.conf.urls.defaults import *
urlpatterns = patterns('',
 url(r'^buildit/$', 'main.apps.builder.views.main'),
)

views.py

from django.http import HttpResponse

def main(request):
  return HttpResponse(request.method)

HTML表單

<form id="myform">
<input type="checkbox" name="list" value="audio"/> Audio<br />
<input type="checkbox" name="list" value="video"/> Video<br />
<input type="submit" value="Get Custom Library!" /> 
</form>

jQuery的

$(document).ready(function() {

$("#myform").submit(function() {



    serialize = $(this).serialize()

    $.ajax({
    type: 'POST',
    url: '/django/builder/buildit',
    data: serialize,
    crossDomain: false,
    success: function(response){
        alert(response);
    }
});

    return false;

    $(document).ajaxSend(function(event, xhr, settings) {
function getCookie(name) {
    var cookieValue = null;
    if (document.cookie && document.cookie != '') {
        var cookies = document.cookie.split(';');
        for (var i = 0; i < cookies.length; i++) {
            var cookie = jQuery.trim(cookies[i]);
            // Does this cookie string begin with the name we want?
            if (cookie.substring(0, name.length + 1) == (name + '=')) {
                cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                break;
            }
        }
    }
    return cookieValue;
}
function sameOrigin(url) {
    // url could be relative or scheme relative or absolute
    var host = document.location.host; // host + port
    var protocol = document.location.protocol;
    var sr_origin = '//' + host;
    var origin = protocol + sr_origin;
    // Allow absolute or scheme relative URLs to same origin
    return (url == origin || url.slice(0, origin.length + 1) == origin + '/') ||
        (url == sr_origin || url.slice(0, sr_origin.length + 1) == sr_origin + '/') ||
        // or any other URL that isn't scheme relative or absolute i.e relative.
        !(/^(\/\/|http:|https:).*/.test(url));
}
function safeMethod(method) {
    return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}

if (!safeMethod(settings.type) && sameOrigin(settings.url)) {
    xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'));
}
});

});
});

不妨把它放在你的表格中

<form id="myform" method="post">

很難讀出奇怪縮進的javascript。 但是,為什么return false;后會出現代碼return false; 沒有關閉提交回調?

現在我不是Django的專家......但是如果有一個Append_Slash問題,Django似乎會覆蓋任何請求。 它將使用末尾附加的斜杠重定向請求,此時,它將丟失任何POST信息並返回GET方法。 也許嘗試在/ django / builder / buildit的末尾放一個/? 在黑暗中拍攝...(看起來這只有在APPEND_SLASH = false時才有意義......)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM