2016-04-10 19 views
0

Bir rss beslemesinden içerik oluşturmak için feed ayrıştırıcısı kullanıyorum. Böyle Onun şey: Yukarıdaki kod çalışmıyor ya değilse ben bunu test edemez olarakNeden rss feed'inden bir tarih alıp Django modelime ayarlayamıyorum?

import feedparser 

def parse_rss(rss_url): 
    return feedparser.parse(rss_url) 

def generate_content_from_feed(feed): 
    parsed_feed = parse_rss(feed.rss_url) 

    for item in parsed_feed['items']: 
     if not Content.objects.filter(link=item['link']).exists(): 
      content = Content.objects.create(
       title=item['title'], 
       link=item['link'], 
       description=item['description'], 
       pub_date=item['published'], 
       category=item['category'], 
       feed=feed, 
      ) 
      if item['enclosure']: 
       content.media_url = item['enclosure']['url'] 
       content.media_type = item['enclosure']['type'] 
      content.save() 

Şimdi, tamamen emin değilim. Benim models.py yılında

, bu iki model var:

bir yem, O yemi içerik oluşturulur ve İçerik nesneler olarak kaydedilir kaydedilir merak vardır durumunda,
class Feed(models.Model): 
    rss_url = models.URLField() 

    def save(self, *args, **kwargs): 
     super(Feed, self).save(*args, **kwargs) 
     generate_content_from_feed(self) # Generating the content 

class Content(models.Model): 
    title = models.CharField(max_length=500) 
    link = models.URLField() 
    description = models.TextField() 
    pub_date = models.DateTimeField(default=None) 
    category = models.CharField(max_length=500, blank=True) 
    media_url = models.URLField(blank=True) # Attached media file url 
    media_type = models.CharField(max_length=50, blank=True) 
    feed = models.ForeignKey(Feed, related_name='content_feed') 

benim veritabanım. Atleast, yapmaya çalıştığım şey.

ValidationError at /admin/myapp/feed/add/ 
[u"'Fri, 08 Apr 2016 14:51:02 +0000' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] format."] 

Bu sorunu nasıl düzeltebilirim: Bir feed kaydederken Ancak, böyle bir hata söyleyerek şey verir? Ve ayrıca, uzman değilim, benim generate_content_from_feed yöntemimin sorunları olup olmadığını kimse anlatabilir mi? Çok teşekkürler.

+0

tarih numarasına Apr dönüştürmeye çalışırken, neden test edemiyoruz? Kodunuzda hata ayıklamanızı ve kaydetmeden önce değişkenlerinizin içeriğini tam olarak görmenizi tavsiye ederim. – Wtower

cevap

0

daha iyi bir yolu olabilir ama yine sorun varsa lütfen kod, bu

a = 'Fri, 08 A`enter code here`pr 2016 14:51:02 +0000' 

dates = re.search(r'(\w+), (\d+) (\w+) (\d{4}) (\d+):(\d+):(\d+) ([\w+]+)', a) 
# YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] format."] 

day_str = dates.group(1) 
day = dates.group(2) 
month_str = dates.group(3) 
year = dates.group(4) 
hour = dates.group(5) 
minute = dates.group(6) 
second = dates.group(7) 

new_date = "%s-%s-%s %s:%s:%s" % (year, month_str, day, hour, minute, second) 
print(new_date) 

>>> 2016-Apr-08 14:51:02 

gibi görünmelidir onun muhtemelen iyi merak ediyorum

İlgili konular