【问题标题】:JSON post gets no response from django viewJSON 帖子没有从 django 视图中得到响应
【发布时间】:2014-07-14 17:35:33
【问题描述】:

所以我尝试了一个简单的 JSON 帖子。但我对 django 方面的看法根本没有回应。 JavaScript:

$(function(){
var arr = { 'file': "print \"It works!\"", 'fileName' : "JSONtest", 'fileExt':".py" };

$.ajaxSetup({ 
 beforeSend: function(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;
     }
     if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) {
         // Only send the token to relative URLs i.e. locally.
         xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'));
     }
 } 
});
$.ajax({
    url: '/au',
    type: 'POST',
    data: JSON.stringify(arr),
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    success: function(data) {
        alert(data['link']);
    }
    });
});

view.py:

from django.shortcuts import render_to_response
from django.http import HttpResponse
from django.template import RequestContext, loader
from django.core.files.base import ContentFile
from django.views.decorators.csrf import ensure_csrf_cookie

from quickpad.models import FileLink

from mimetypes import types_map

from random import randint

def upload(request):
    print 'hi'
    genId = ''
    try:
        data=json.loads(request.body)
        file=data['file']
        name=data['fileName']
        ext=data['fileExt']
        newFile = FileLink(fileName=name,fileExt=ext)
        newFile.file.save(name,ContentFile(file))

        while (True):
            genId = ''.join([alphaNum[randint(0,61)] for i in xrange(8)])
            if len(FileLink.objects.filter(fileId=genId)) == 0: break
        print genId
        newFile.fileId = genId
        newFile.save()

    except:
        print 'nope'
    response = HttpResponse()
    csrf(response)
    response['link'] = genId
    return response

打印“hi”语句不显示也不创建任何新对象。你能帮忙的话,我会很高兴。谢谢!

【问题讨论】:

  • 你的 urls.py 是什么
  • 尝试在 'au' 之后添加一个 '/'(斜杠),这样它就会变成: url: '/au/',

标签: jquery ajax django python-2.7 django-views


【解决方案1】:

抱歉耽搁了,问题是我的 url.py 中的排序默认 r'^$' 由于某种原因与另一个 url 混淆。经过 2 小时的调试,我终于发现了错误(很难调试,因为没有显示错误,也没有任何调试文本)。抱歉,这是我的第一个 Django 应用程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    • 2012-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多