Wie versende ich eine leere Antwort in Django ohne Vorlagen
Ich geschrieben habe, eine Ansicht, die eine Antwort auf die ajax-Anfragen vom browser. Es ist geschrieben, wie so -
@login_required
def no_response(request):
params = request.has_key("params")
if params:
# do processing
var = RequestContext(request, {vars})
return render_to_response('some_template.html', var)
else: #some error
# I want to send an empty string so that the
# client-side javascript can display some error string.
return render_to_response("") #this throws an error without a template.
Wie mache ich es?
Hier ist, wie ich mit der Antwort des Servers auf client-Seite -
$.ajax
({
type : "GET",
url : url_sr,
dataType : "html",
cache : false,
success : function(response)
{
if(response)
$("#resp").html(response);
else
$("#resp").html("<div id='no'>No data</div>");
}
});
InformationsquelleAutor der Frage Srikar Appalaraju | 2010-11-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
render_to_response
ist eine Verknüpfung, die speziell für die Darstellung einer Vorlage. Wenn Sie nicht möchten, dass zu tun, einfach nur wieder eine leereHttpResponse
:Jedoch in diesem Umstand würde ich nicht tun - Sie sind Signal der AJAX, dass es ein Fehler war, so sollten Sie einen Fehler zurück Reaktion, möglicherweise code 400 - was kann man tun, indem
HttpResponseBadRequest
statt.InformationsquelleAutor der Antwort Daniel Roseman
Ich denke, der beste code, um eine leere Antwort ist
204 No Content
.Jedoch in Ihrem Fall, sollten Sie nicht wieder eine leere Antwort, da 204 bedeutet:
server *erfolgreich* verarbeitet die Anfrage und ist nicht wieder alle Inhalte.
.Ist es besser, Rückkehr einige
4xx
status code signal besser der Fehler in der client-Seite. Yo kann jeden string in den Körper des4xx
Antwort, aber ich empfehle Ihnen, senden Sie eineJSONResponse
:InformationsquelleAutor der Antwort robermorales