我按照这篇文章尝试从外部网站加载图像。我正在尝试从外部链接中提取所有图像。我使用 BeautifulSoup 来解析链接并获取所有必需的链接。
在视图调用代码末尾的 render() 函数之前,image_list 和 return_dict 具有所需的值。但是,渲染函数似乎正在生成 AttributeError 异常。请协助。
我收到以下错误:
AttributeError at /post/add_new/
META
Request Method: POST
Request URL: http://localhost:8000/post/add_new/
Django Version: 1.4.1
Exception Type: AttributeError
Exception Value:
META
Exception Location: C:\Python27\lib\urllib2.py in __getattr__, line 225
Python Executable: C:\Python27\python.exe
Python Version: 2.7.3
Python Path:
['C:\\Users\\Talal\\Python Workspace\\talal_ynd',
'C:\\Python27\\lib\\site-packages\\ipython-0.13-py2.7.egg',
'C:\\Python27\\lib\\site-packages\\pyreadline-2.0_dev1-py2.7-win32.egg',
'C:\\Python27\\lib\\site-packages\\pil-1.1.7-py2.7-win32.egg',
'C:\\Python27\\lib\\site-packages\\setuptools-0.6c11-py2.7.egg',
'C:\\windows\\system32\\python27.zip',
'C:\\Python27\\DLLs',
'C:\\Python27\\lib',
'C:\\Python27\\lib\\plat-win',
'C:\\Python27\\lib\\lib-tk',
'C:\\Python27',
'C:\\Python27\\lib\\site-packages']
Server time: Thu, 13 Sep 2012 17:30:45 +0500
这是我的视图文件:
# Create your views here.
from django.shortcuts import render
from django.http import HttpResponseRedirect
from posts.models import Post, PostForm
from django.template.loader import get_template
from talal_ynd.settings import TEMPLATE_DIRS
def post_view(request):
if request.method == 'POST':
post_form = PostForm(request.POST)
if post_form.is_valid():
success_message = 'Thank you.'
link = post_form.cleaned_data['link']
if 'get_link' in request.POST:
import urllib2
request = urllib2.Request(link)
response = urllib2.urlopen(request)
html=response.read()
from BeautifulSoup import BeautifulSoup
soup=BeautifulSoup(html)
import re
title=''; description=''
description=soup.findAll('meta',
attrs={'name':re.compile("description$",
re.I)})[0].get('content')
try:
title=soup.findAll('meta',
attrs={'name':re.compile("^title$",re.I)})[0].get('content')
except:
pass
if not title:
title=soup.title.string
max_images=10
image_tags=soup.findAll('img',limit=max_images)
image_urls_list=[]
image_urls_list2=[]
from urlparse import urljoin
for image_tag in image_tags:
url=image_tag.get('src')
#image_urls_list.append(request.build_absolute_uri(url))#urljoin(link,url))#HttpRequest.build_absolute_uri(url))
#image_urls_list.append(request.urljoin(link,url))
image_urls_list.append(url)
image_list=[]
for url in image_urls_list:
image_list.append({'url':url})
return_dict={'title':title, 'description':description}
return_dict.update({'images':image_list})
else:
post_form = PostForm()
else:
post_form = PostForm()
return render(request, 'posts/post_form.html', locals())