为什么我的Django request.method与POST不匹配

时间:2013-02-19 09:50:56

标签: django

$.ajax({
    type :'GET',

    url : geturl(a),
    // type: $(this).attr('method'),
    dataType : 'json',

views.py:

  if request.method=="POST":


        if request.POST.get('monyrsubmit'):

            monthform=MonthForm(request.POST)
            if monthform.is_valid():
                selected_month=monthform.cleaned_data["Month"]
                selected_year=monthform.cleaned_data["Year"]
                print selected_month
                print selected_year  

我可以在ajax的type字段中同时拥有GET和POST请求。即时通讯使用表单,只有在单击提交按钮时,我才会尝试根据提交的数据显示信息。如果request.POST.get('monyrsubmit')不起作用。 帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

这很简单。你必须抽象事件。

function event_page_load() {
   function ajax_request('GET')
}

function click_submit_button() {
   function ajax_request('POST')
}

function ajax_request(type) {

 $.ajax({
    type : type,
    ......
    ......
 })
}

您还可以考虑以下一般指导原则。 应根据对服务器的请求类型使用GET和POST

 - If you are reading the existing data(without modification) from the server, use GET
 - if you are writing/modifying any data in the server, use POST

在jQuery中,您可以使用这些简单的方法。

对于GET请求

$.get(  
    url,  
    {param1: "value1", param2: "value2"},  
    function(responseText){  
        // todo ;  
    },  
    "html"  
);  

用于POST请求

$.post(  
    url,  
    {param1: "value1", param2: "value2"},  
    function(responseText){  
        // todo ;  
    },  
    "html"  
);  

确保您已禁用浏览器缓存。

$.ajaxSetup ({  
        cache: false  
    });

在django方面,您可以使用request.is_ajax()方法验证ajax调用,并且可以根据request.method属性进行过滤。

您可以在https://github.com/sivaa/django-jquery-ajax-exmaples

中使用Djano推荐AJAX的所有可能用法