为什么ajax调用没有给出.is_ajax()= True?

时间:2018-01-26 17:17:10

标签: javascript ajax django django-views

我的template.html:

...
<button class="btn btn-success" onclick="save_post(event, 'publish')">Publish</button>
...

我的javascript.js:

function save_post(event, action) {
  event.preventDefault();#new line
  var tag_string=document.getElementById('id_tags').value;
  if (action=='publish' || action=='draft') {
    var url_post='/blog/post/new/'
  } else {
    var url_post='/blog/post_edit/'
  };

  $.ajax({type: 'POST',
    url: url_post,
    data: {
      tagstring: tag_string,
      action: action
    },
    success: function (lista) {
        //code
    }
  });
};

我的views.py:

@staff_member_required
def post_new(request):
    context_dict=[]
    if request.method == "POST":
        if request.is_ajax():
            #code
        ...

    else:
        form = PostForm()
    return render(request, 'blog/post_edit.html', context_dict)

我的url.py

app_name = 'blog'
urlpatterns = [
    ...
    path('post/new/', views.post_new, name='post_new'),
    path('post/<int:pk>/edit/', views.post_edit, name='post_edit'),
    ...

我的视图由url(浏览器)调用,然后按钮调用javascript函数并再次调用(使用ajax)相同的视图,这次使用request.method = "POST"并且这有效,但是{{1} } request.is_ajax()

对于呼叫post_edit(可能)我需要帖子的id。我在哪里可以得到它? 我应该从模板传递给save_post()吗?

编辑:忽略以下这些行

我还应该在某个地方使用False吗?

谢谢

编辑:现在我使用preventDefault(),但它会出现此错误:

preventDefault()

和ajax dosn调用该视图。编辑:我解决了这个问题,但我明天继续:)

1 个答案:

答案 0 :(得分:-2)

您的Ajax代码有些问题和观点是正确的

我附上了我的代码附加图片和代码

$.ajax({
                type : 'POST', // define the type of HTTP verb we want to use (POST for our form)
                url  : 'myajaxview', // the url where we want to POST
                data :{
                    'csrfmiddlewaretoken': '{{csrf_token}}',
                    'text': text,
                    'search': search,
                    'email': email,
                    'url': url,
                    'telephone': telephone,
                    'password': password,
                    'number': number,
                },
                dataType : 'json', // what type of data do we expect back from the server
                encode   : true
            })

enter image description here