python - Django और पायथन का उपयोग कर एक JSON प्रतिक्रिया बनाना




(9)

Django 1.7 के बाद से आपके पास एक मानक JsonResponse है जो आपको चाहिए:

from django.http import JsonResponse
...
return JsonResponse(array_to_js, safe=False)

आपको अपनी सरणी json.dump करने की भी आवश्यकता नहीं है।

मैं एक Django HttpResponse में सर्वर पक्ष अजाक्स प्रतिक्रिया स्क्रिप्ट को कन्वर्ट करने की कोशिश कर रहा हूं, लेकिन स्पष्ट रूप से यह काम नहीं कर रहा है।

यह सर्वर-साइड स्क्रिप्ट है:

/* RECEIVE VALUE */
$validateValue=$_POST['validateValue'];
$validateId=$_POST['validateId'];
$validateError=$_POST['validateError'];

/* RETURN VALUE */
$arrayToJs = array();
$arrayToJs[0] = $validateId;
$arrayToJs[1] = $validateError;

if($validateValue =="Testuser"){  // Validate??
    $arrayToJs[2] = "true";       // RETURN TRUE
    echo '{"jsonValidateReturn":'.json_encode($arrayToJs).'}';  // RETURN ARRAY WITH success
}
else{
    for($x=0;$x<1000000;$x++){
        if($x == 990000){
            $arrayToJs[2] = "false";
            echo '{"jsonValidateReturn":'.json_encode($arrayToJs).'}';   // RETURNS ARRAY WITH ERROR.
        }
    }
}

और यह परिवर्तित कोड है

def validate_user(request):
    if request.method == 'POST':
        vld_value = request.POST.get('validateValue')
        vld_id = request.POST.get('validateId')
        vld_error = request.POST.get('validateError')

        array_to_js = [vld_id, vld_error, False]

        if vld_value == "TestUser":
            array_to_js[2] = True
            x = simplejson.dumps(array_to_js)
            return HttpResponse(x)
        else:
            array_to_js[2] = False
            x = simplejson.dumps(array_to_js)
            error = 'Error'
            return render_to_response('index.html',{'error':error},context_instance=RequestContext(request))
    return render_to_response('index.html',context_instance=RequestContext(request))

मैं पाइथन सूची को एन्कोड करने के लिए सरलजोन का उपयोग कर रहा हूं (इसलिए यह एक JSON सरणी लौटाएगा)। मैं अभी तक समस्या का पता नहीं लगा सका। लेकिन मुझे लगता है कि मैंने 'गूंज' के बारे में कुछ गलत किया है।


Django 1.7 में नया

आप JsonResponse ऑब्जेक्ट्स का उपयोग कर सकते हैं।

दस्तावेज़ों से:

from django.http import JsonResponse
return JsonResponse({'foo':'bar'})

Django संस्करण 1.7 या उच्चतर के साथ यह बहुत सुविधाजनक है क्योंकि आपके पास JsonResponse क्लास है, जो HttpResponse का उप-वर्ग है।

from django.http import JsonResponse
    def profile(request):
        data = {
            'name': 'Raghav',
            'location': 'India',
            'is_active': False,
            'count': 28
        }
        return JsonResponse(data)

Django के पुराने संस्करणों के लिए, आपको एक HttpResponse ऑब्जेक्ट का उपयोग करना होगा।

import json
from django.http import HttpResponse

def profile(request):
    data = {
        'name': 'Raghav',
        'location': 'India',
        'is_active': False,
        'count': 28
    }
    dump = json.dumps(data)
    return HttpResponse(dump, content_type='application/json')

कक्षा आधारित दृश्य का उपयोग करके यह मेरा पसंदीदा संस्करण है। बस बुनियादी दृश्य को उपclass और get () - विधि को ओवरराइड करें।

import json

class MyJsonView(View):

    def get(self, *args, **kwargs):
        resp = {'my_key': 'my value',}
        return HttpResponse(json.dumps(resp), mimetype="application/json" )

देखें में इसका उपयोग करें:

form.field.errors|striptags

एचटीएमएल के बिना सत्यापन संदेश प्राप्त करने के लिए


मैं आमतौर पर जेएसओएन सामग्री को वापस करने के लिए एक सूची नहीं, एक शब्दकोश का उपयोग करता हूं।

import json

from django.http import HttpResponse

response_data = {}
response_data['result'] = 'error'
response_data['message'] = 'Some error message'

प्री-डीजेगो 1.7 आप इसे इस तरह वापस कर देंगे:

return HttpResponse(json.dumps(response_data), content_type="application/json")

Django JsonResponse लिए, JsonResponse उपयोग JsonResponse जैसा कि इस SO उत्तर में दिखाया गया है:

from django.http import JsonResponse
return JsonResponse({'foo':'bar'})

यूनिकोड सामान के साथ मदद करने के लिए आप django serializer का उपयोग करना चाहेंगे:

from django.core import serializers

json_serializer = serializers.get_serializer("json")()
    response =  json_serializer.serialize(list, ensure_ascii=False, indent=2, use_natural_keys=True)
    return HttpResponse(response, mimetype="application/json")

AJAX (जेसन) के साथ Google ऐप इंजन का उपयोग कैसे करें?

JQuery के साथ कोड जावास्क्रिप्ट:

$.ajax({
    url: '/ajax',
    dataType : 'json',
    cache: false,
    success: function(data) {
        alert('Load was performed.'+data.ajax_resp);
    }
});

कोड पायथन

class Ajax(webapp2.RequestHandler):
def get(self):
    my_response = {'ajax_resp':'Hello, webapp World!'}
    datos = json.dumps(my_response)

    self.response.headers.add_header('content-type', 'application/json', charset='utf-8')
    self.response.out.write(datos)

from django.http import HttpResponse
import json

class JsonResponse(HttpResponse):
    def __init__(self, content={}, mimetype=None, status=None,
             content_type='application/json'):
        super(JsonResponse, self).__init__(json.dumps(content), mimetype=mimetype,
                                           status=status, content_type=content_type)

और दृश्य में:

resp_data = {'my_key': 'my value',}
return JsonResponse(resp_data)






json