Эффективный способ написать представление Django - PullRequest
0 голосов
/ 25 сентября 2019

Я новичок в Джанго.Я создаю веб-приложение.(приведенный ниже код удаляет данные из флипкарта каждый раз, когда я открываю свой локальный сервер. Если объект уже существует, он обновляется с новой ценой, в противном случае он создает новый объект). Я записал логику удаления в * 1001.*

views.py

from django.shortcuts import render
from bs4 import BeautifulSoup as soup
import requests
import re
from .models import Information

def basicScrap(request):
  def main():
    url_list = ["https://www.flipkart.com/signoraware-best-steel-lunch-box"\
            "-blue-500ml-350ml-200ml-tumbler-370ml-3-containers-box/p/itm"\
            "fedq3gcpfutwv?pid=LBXFED4W8HSF9SPD&otracker=wishlist&lid=LST"\
            "LBXFED4W8HSF9SPD8EFHDU&fm=organic&iid=24db7969-8ff2-4574-8550"\
            "-dfed03f05549.LBXFED4W8HSF9SPD.PRODUCTSUMMARY&ppt=hp&ppn=hp&s"\
            "sid=hm69tsuogg0000001569056937359"]
    url_list.append("https://www.flipkart.com/u-s-polo-assn-slim-men-blue-"\
            "jeans/p/itmfey33jmhsgyhe?pid=JEAFEY33Q4XTYEPR&otracker=wishli"\
            "st&lid=LSTJEAFEY33Q4XTYEPRSEAI4Q&fm=organic&iid=759c7ef2-212e"\
            "-46c7-8c1c-274e8baf0df8.JEAFEY33Q4XTYEPR.PRODUCTSUMMARY&ppt=h"\
            "p&ppn=hp&ssid=amn7veuw9s0000001569408699594")
    url_list.append("https://www.flipkart.com/himalaya-anti-hair-fall-sham"\
            "poo/p/itmf3xfxdmywkwhs?pid=SMPEUHHFZYBXXHGB&lid=LSTSMPEUHHFZY"\
            "BXXHGBNMGARX&marketplace=FLIPKART&sattr[]=quantity&st=quantity")

    for my_url in url_list:
        """Iterating through each url"""
        uClient = requests.get(my_url)
        if uClient.status_code == 200:
            page_html = uClient.text

            page_soup = soup(page_html, "html.parser")

            containers = page_soup.find("div", {"class": "_1HmYoV _35HD7C col-8-12"})
            name = containers.find("span", {"class": "_35KyD6"})
            pName = name.text

            price = containers.find("div", {"class": "_1vC4OE _3qQ9m1"})
            boxPrice = price.text.strip()
            pPrice = int(''.join(filter(str.isdigit, boxPrice)))

            get_name = Information.objects.filter(productName=pName)

            """If data not in the record then it'll create new object otherwise it'll update the 
               existing object with new price"""
            if get_name.count()==0:
                information_instance = Information.objects.create(
                                        productName=pName, productPrice=pPrice,
                                        minPrice=minPrice)
            else:
                minPrice = get_name[0].minPrice
                if minPrice > pPrice:
                    minPrice=pPrice
                information_instance = Information.objects.filter(productName=pName).update(
                                        productPrice=pPrice,
                                        minPrice=minPrice)

        else:
            print('Not Found.')

  main()
  return render(request, 'coreapp/index.html')

И мои models.py следующие:

from django.db import models

class Information(models.Model):
    productName = models.CharField(max_length=128, unique=True)
    productPrice = models.IntegerField(default=1)
    minPrice = models.IntegerField(default=1)

Я знаю, что не написал код эффективным способом.Может кто-нибудь объяснить, как лучше написать мой приведенный выше код Django?

...