我的目標是採用xml響應並將其保存到我的數據庫中。我能夠與Elementtree
這是products
使用ElementTreee迭代XML響應Django
的XML看起來像這樣來訪問的第一個元素,
<?xml version="1.0" encoding="UTF-8"?>
<products>
<item id="0">
<product_id> ...
<product_name> ...
<product_url> ...
<advertiser> ...
<designer> ...
<image_url> ...
<price> ...
<commission> ...
</item>
當我嘗試和遍歷它我得到的元素,但不是在元素中的數據打印出來爲每個元素。
def advertisers(request):
url = 'https://api.example.com/111'
response = requests.get(url, stream=True)
response.raw.decode_content = True
tree = ElementTree.parse(response.raw)
root = tree.getroot()
for item in root:
product_id = item.find('product_id')
product_name = item.find('product_name')
product_url = item.find('product_url')
advertiser = item.find('advertiser')
designer = item.find('designer')
image_url = item.find('image_url')
price = item.find('price')
commission = item.find('commission')
print (product_id, product_name, product_url, advertiser, designer, image_url, price, commission)
return HttpResponse()
Output
<Element 'product_id' at 0x107bba6d8> <Element 'product_name' at 0x107bba728> <Element 'product_url' at 0x107bba778> <Element 'advertiser' at 0x107bba7c8> <Element 'designer' at 0x107bba818> <Element 'image_url' at 0x107bba868> <Element 'price' at 0x107bba8b8> <Element 'commission' at 0x107bba908>
如果我的模型看起來像這樣,有人請告訴我如何構造此循環以將元素保存到數據庫。我知道如果我通過他們循環,並追加每一個我可以打電話items.save()
,一切都應該是好的。我只是想確保我首先正確訪問。
class Products(models.Model):
product_id = models.CharField(max_length=100)
product_name = models.CharField(max_length=100)
product_url = models.CharField(max_length=100)
advertiser = models.CharField(max_length=100)
designer = models.CharField(max_length=100)
image_url = models.CharField(max_length=100)
price = models.CharField(max_length=100)
commission = models.CharField(max_length=100)
def __str__(self):
return self.products
正如我在答覆中提到,可以通過''一樣product_id.text text'屬性獲取元素的值','product_name.text'等等。這就是你現在要求的(編輯之後)? – har07