¿Es posible crear nuevos productos usando scrapy en django?
Cada vez que ejecuto scrapy.py me sale el siguiente error:
raise ImproperlyConfigured( django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.mi archivo de modelos de aplicaciones
from django.db import models # Create your models here. class Product(models.Model): name = models.CharField(max_length=50) age = models.IntegerField() content = models.TextField(max_length=400) def __str__(self): return self.namearchivo scrapy.py
from models import Product Product.objects.create(name='BMW', age=25, content='cool car')Sí, por supuesto que es posible, solo importa django y configura la variable DJANGO_SETTINGS_MODULE :
import django import os # Configure settings for project # Need to run this before calling models from application! os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'app_name.settings') # Replace app_name with your application name. # Import settings django.setup() # Import the models now from app_name.models import Product # Use the imported model product = Product.objects.create(...)Más info en esta publicación
Para el error que tiene arriba, es posible que esté configurando Django incorrectamente.
Por lo tanto, esta pregunta tiene dos problemas a resolver:
**1. Solucionar el problema de configuración de Django **
Para la primera pregunta, le aconsejo que configure Django normalmente creando un proyecto... Luego, cree una aplicación como python manage.py startapp product_app AGREGAR product_app en settings.INSTALLED_APPS como:
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'product_app' <----- without this the models.py won't work. ] Luego, vaya a su models.py y cree el Product modelo, por ejemplo. Migre el modelo a su base de datos.
Muy bien, tu primera pregunta podría ser respondida.
2. Agregue datos rastreados en un modelo de Django.
La segunda parte es enviar datos a la tabla de product usando el modelo de Product (la representación de la tabla de productos).
Los campos que creará dependerán de los datos que necesite. Digamos que los datos que quiero almacenar de los datos rastreados son: name , description , price , stock y si está available .
Genial, vamos a crear nuestro modelo:
aplicación_producto/
from django.db import models class Product(models.Model): name = models.CharField(max_length=250, unique=True) description = models.TextField(blank=True) price = models.DecimalField(max_digits=10, decimal_places=2) stock = models.IntegerField(default =0) available = models.BooleanField(default=True) class Meta: verbose_name = 'product' verbose_name_plural = 'products' def __str__(self): return str(self.name) Dado que Django acepta diccionarios como objetos que se utilizarán para consultas, puede obtener estos datos rastreados en un diccionario/json para luego insertarlos en la tabla Product .
Muy bien, ahora por su parte, deberá obtener los datos como diccionario de alguna manera similar a este y empujarlos a la tabla Producto:
data = { "name":"bmw", "description":"dont waste your money", "price":25000.00, "stock":4, "available":True }ejemplo de consulta:
Type "help", "copyright", "credits" or "license" for more information. (InteractiveConsole) >>> >>> from product_app.models import Product >>> >>> data = {"name":"bmw", "description":"dont waste your money", "price":25000.00, "stock":4, "available":True,} >>> >>> product = Product(**data) >>> product.save() >>> >>> product <Product: bmw>Desde aquí puedes hacer lo que quieras con los datos. Instale Django-Rest-Framework y muestre los datos como REST-API o muestre los datos en una plantilla.
Ten en cuenta que puedes crear las consultas necesarias en views.py o donde quieras.