我有一个python脚本,它从指定的站点中提取链接,我想使用Django从中创建单页webapp。这是我的第一个Python和Django项目,所以我希望它尽可能简单,以避免任何挫折,但我有点卡住了。
这是我的views.py
from django.http import HttpResponse
from bs4 import BeautifulSoup
import urllib2, sys
import urlparse
import re
import time, threading
def businessghana(request):
site = "http://www.businessghana.com/portal/jobs"
hdr = {'User-Agent' : 'Mozilla/5.0'}
req = urllib2.Request(site, headers=hdr)
jobpass = urllib2.urlopen(req)
soup = BeautifulSoup(jobpass)
for tag in soup.find_all('a', href = True):
tag['href'] = urlparse.urljoin('http://www.businessghana.com/portal/', tag['href'])
return map(str, soup.find_all('a', href = re.compile('.getJobInfo')))
threading.Timer(3600, businessghana).start()
这些功能大约有10个用于10个不同的站点,但它们具有相似的性质,因此对于Django项目我只使用其中一个。再次,保持简单,避免fustration
这是我的urls.py
from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
url(r'^hello/$', 'listing.views.businessghana'),
url(r'^admin/', include(admin.site.urls)),
)
这是我的models.py:
(我想我在胡说八道,但这是我能想到的最好的)
class jobLinks(models.Model):
links = models.CharField(max_length = 200)
pub_date = models.DateTimeField('date retrieved')
def __unicode__(self):
return self.links
当我访问网址时:
127.0.0.1:8000/hello/
我得到错误'list'对象没有属性'status_code'。
这应该是一个单页面站点,它只显示从视图中的函数中检索到的链接。我有其他计划让它更复杂,但我想从这开始。
请问我错过了什么?
models.py内容是否有意义?
提前致谢
答案 0 :(得分:2)
Django视图必须返回HttpResponse,而不是列表。
答案 1 :(得分:1)
这是一个noob问题,但像@bruno说Django视图必须返回HttpResponse。
要做到这一点,我只需将我的return语句包装在HttpResponse周围,所以它看起来像这样:
return HttpResponse(map(str, soup.find_all('a', href = re.compile('.getJobInfo'))))