python django http httpresponse shopify

python - post django



ConfiguraciĆ³n del tipo de contenido en el objeto Django HttpResponse para la aplicaciĆ³n Shopify (4)

Así que esto funcionó para mí:

def featured(request): response = HttpResponse("", content_type="application/liquid; charset=utf-8") response[''Content-Length''] = len(content) response.write(''<html>test123</html>'') return response

¡Gracias a todos por la ayuda!

Estoy trabajando en una aplicación de Shopify usando Django, que estoy alojando en un VPS con nginx y gunicorn.

Estoy tratando de cambiar el tipo de contenido de un objeto HttpResponse a application/liquid , de modo que pueda usar la función de proxy de la aplicación de Shopify, pero no parece estar funcionando.

Aquí está lo que creo que es la sección relevante de mi código:

from django.shortcuts import render_to_response, render from django.http import HttpResponse from django.template import RequestContext import shopify from shopify_app.decorators import shop_login_required def featured(request): response = HttpResponse() response[''content_type''] = ''application/liquid; charset=utf-8'' response[''content''] = ''<html>test123</html>'' response[''Content-Length''] = len(response.content) return response

De acuerdo con los documentos de Django , debo establecer la response[''''content_type] para establecer Content-Type en el encabezado. Desafortunadamente, cuando voy a la URL correspondiente a esta función en views.py, recibo una respuesta 200, pero el tipo de contenido no ha cambiado y la longitud del contenido es 0. Aquí están mis encabezados de respuesta:

HTTP/1.1 200 OK Server: nginx Date: Tue, 09 Jul 2013 12:26:59 GMT Content-Type: text/html; charset=utf-8 Content-Length: 0 Connection: keep-alive X-Request-Id: 2170c81fb16d18fc9dc056780c6d92fd content: <html>test123</html> vary: Cookie content_type: application/liquid; charset=utf-8 P3P: CP="NOI DSP COR NID ADMa OPTa OUR NOR"

Si cambio la response[''content_type''] a la response[''Content-Type''] , obtengo los siguientes encabezados:

HTTP/1.1 200 OK Server: nginx Date: Tue, 09 Jul 2013 12:34:09 GMT Content-Type: text/html; charset=utf-8 Content-Length: 3097 Connection: keep-alive X-Request-Id: 76e67e04b753294a3c37c5c160b42bcb vary: Accept-Encoding status: 200 OK x-shopid: 2217942 x-request-id: 6e63ef3a27091c73a9e3fdaa03cc28cb x-ua-compatible: IE=Edge,chrome=1 p3p: CP="NOI DSP COR NID ADMa OPTa OUR NOR" content-encoding: gzip P3P: CP="NOI DSP COR NID ADMa OPTa OUR NOR"

¿Alguna idea sobre cómo puedo cambiar el tipo de contenido de la respuesta? ¿Podría ser esto un problema con mis configuraciones nginx o gunicorn?

¡Gracias por tu ayuda!


Intenta lo siguiente:

def featured(request): content = ''<html>test123</html>'' response = HttpResponse(content, content_type=''application/liquid'') response[''Content-Length''] = len(content) return response

Una sugerencia rápida, puede agregar esto a la parte http o al bloque del server de su configuración NGINX para que no tenga que especificar la codificación dentro de las vistas y otro código Django:

charset utf-8; charset_types text/css application/json text/plain application/liquid;


Siguiendo las instrucciones de los documentos debería ser algo como esto:

# set content_type response = HttpResponse("", content_type="application/liquid; charset=utf-8") # add content response.write(''<html>test123</html>'')

¡Espero que esto ayude!


Solo para expandir las otras respuestas, si el objeto HttpResponse ya existe y su tipo MIME debe establecerse después de crear una instancia (por ejemplo, cuando se invoca un método principal), se puede lograr de esta manera:

response = super(...) # This returns some HttpResponse object response[''Content-Type''] = "application/liquid" return response