Как вызвать API из модели Django на основе одного поля - PullRequest
0 голосов
/ 09 января 2020

Я хочу заполнить несколько полей на основе поля website ниже. Я отправляю сайт как параметр в API, и он возвращает количество значений в JSON. Затем я хочу отправить его и сохранить в модели для этого экземпляра.

class newURLposts(models.Model):
    created_on = models.DateTimeField(auto_now_add=True)
    website = models.URLField(max_length=250)   
    domain = models.TextField(blank=True)
    host = models.TextField(blank=True)
    url = models.URLField(blank=True)
    img = models.ImageField(upload_to='link/img/',blank=True)
    title = models.TextField(blank=True)
    description =  models.TextField(blank=True)
    favicon = models.ImageField(upload_to='link/favicon/',blank=True)

    def save(self, *args, **kwargs):
        review_url = self.website
        u = "u=" + review_url
        r = "&r=#####"
        e = "&e=#####"
        t = "&t=json"
        PARAMS12 = u + r + e + t
        URL = "#####"

        site = requests.get(url = URL, params = PARAMS12)
        parsed_site = json.loads(site.content.decode('utf-8'))


        self.domain = parsed_site["domain"]
        self.host = parsed_site["host"]
        self.url = parsed_site["url"]
        self.img = parsed_site["img"]
        self.title = parsed_site["title"]
        self.description = parsed_site["description"]
        self.favicon = parsed_site["favicon"]
        super().save(*args, **kwargs)

    class Meta:
        ordering = ['-created_on']

1 Ответ

0 голосов
/ 13 января 2020

Решил проблему - разделил ее на два мясных выхода

class newURLposts(models.Model):
    created_on = models.DateTimeField(auto_now_add=True)
    website= models.URLField(max_length=250)

    #Info from gutURL
    domain = models.TextField(blank=True)
    host = models.TextField(blank=True)
    url = models.URLField(blank=True)
    img = models.ImageField(upload_to='link/img/',blank=True)
    title = models.TextField(blank=True)
    description =  models.TextField(blank=True)
    favicon = models.ImageField(upload_to='link/favicon/',blank=True)

    def parsed_site(self, *args, **kwargs):
        review_url = self.website
        u = "u=" + review_url
        r = "&r=####"
        e = "&e=####"
        t = "&t=json"
        PARAMS12 = u + r + e + t
        URL = "####"

        site = requests.get(url = URL, params = PARAMS12)
        return json.loads(site.content.decode('utf-8'))

    def save(self, *args, **kwargs):
        self.domain = self.parsed_site()["domain"]
        self.host = self.parsed_site()["host"]
        self.url = self.parsed_site()["url"]
        self.img = self.parsed_site()["img"]
        self.title = self.parsed_site()["title"]
        self.description = self.parsed_site()["description"]
        self.favicon = self.parsed_site()["favicon"]
        super(newURLposts, self).save(*args, **kwargs)

    class Meta:
        ordering = ['-created_on']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...