Soy completamente nuevo en Django y Python. Ahora estoy tratando de desarrollar un servicio simple. Esta es la idea: envío 3 parámetros de JS a Django por POST, (desde otro dominio, CORS) en Django, python procesa los datos y me devuelve JSON, eso todo.
¿¡Por qué he hecho eso!? , porque necesito funciones especiales disponibles en pyhon: Estadísticas.
Este es el código con el que empiezo:
urls.py
from django.conf.urls import url from django.contrib import admin from . import controlador #este sisi urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^get_weibull/', controlador.get_data_weibull)]controlador.py
from django.shortcuts import render from django.http import HttpResponseRedirect from django.shortcuts import render_to_response import numpy as np import matplotlib.pyplot as plt def weib(x,n,a): return (a / n) * (x / n)**(a - 1) * np.exp(-(x / n)**a) def get_data_weibull(self): a = 5. # shape s= np.random.weibull(a, 1000) x = np.arange(1,100.)/50. count, bins, ignored = plt.hist(np.random.weibull(5.,1000)) x = np.arange(1,100.)/50. scale = count.max()/weib(x, 1., 5.).max() plt.plot(x, weib(x, 1., 5.)*scale) ax = plt.gca() line = ax.lines[0] return render_to_response(line.get_xydata())Esto es muy simple en codeigniter o laravel. pero no sé cómo comenzar esto en django.
¿Cómo puedo hacer eso?
¡Gracias! rosie
render_to_response , que ha sido reemplazado/reemplazado por render espera enviar variables en un diccionario como un "contexto" a una plantilla. Su vista get_data_weibull debe aceptar una variable, normalmente llamada request ( self solo se usa como el nombre del primer argumento de la función de un objeto). Luego puede construir un diccionario con sus datos de línea y devolverlo como 'JsonResponse` .
Hacer esto
from django.http import JsonResponse def get_data_weibull(self): a = 5. # shape s= np.random.weibull(a, 1000) x = np.arange(1,100.)/50. count, bins, ignored = plt.hist(np.random.weibull(5.,1000)) x = np.arange(1,100.)/50. scale = count.max()/weib(x, 1., 5.).max() plt.plot(x, weib(x, 1., 5.)*scale) ax = plt.gca() line = ax.lines[0] return JsonResponse(line.get_xydata())o si está usando una versión anterior de Django, puede devolver esto en su lugar
HttpResponse(json.dumps(line.get_xydata()), content_type="application/json")