我在Windows 7上使用Django 1.5,Python 2.7。 我有以下视图,从各种来源提取和显示链接。它工作正常。但我不知道如何: 1.将数据保存到数据库中 2.按提取日期对其进行排序。
PS:我在这里有一个类似的问题,但看起来我不太清楚:
Python/Django Extract and append only new links
我希望有人可以帮助我。
views.py:
def foo():
site = "http://www.foo.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')))
def example():
site = "http://example.com"
hdr = {'User-Agent' : 'Mozilla/5.0'}
req = urllib2.Request(site, headers=hdr)
jobpass = urllib2.urlopen(req)
soup = BeautifulSoup(jobpass)
return map(str, soup.find_all('a', href = re.compile('.display-job')))
foo_links = foo()
example_links = example()
def all_links():
return (foo_links + example_links)
def display_links(request):
name = all_links()
paginator = Paginator(name, 25)
page = request.GET.get('page')
try:
name = paginator.page(page)
except PageNotAnInteger:
name = paginator.page(1)
except EmptyPage:
name = paginator.page(paginator.num_pages)
return render_to_response('jobs.html', {'name' : name})
我的模板如下所示:
<ol>
{% for link in name %}
<li> {{ link|safe }}</li>
{% endfor %}
</ol>
<div class="pagination">
<span class= "step-links">
{% if name.has_previous %}
<a href="?page={{ names.previous_page_number }}">Previous</a>
{% endif %}
<span class = "current">
Page {{ name.number }} of {{ name.paginator.num_pages}}.
</span>
{% if name.has_next %}
<a href="?page={{ name.next_page_number}}">next</a>
{% endif %}
</span>
</div>
我的模型看起来像这样:
from django.db import models
class jobLinks(models.Model):
links = models.URLField()
pub_date = models.DateTimeField('date retrieved')
def __unicode__(self):
return self.links
这是我的第一个编程项目,无论我尝试/搜索过什么,我都无法使用此部分 任何帮助将不胜感激。
谢谢
答案 0 :(得分:-2)
我很久没有使用Python和Django模板了,但这看起来像是一个典型的MVC相关项目。在任何情况下,您都需要连接到数据库,因此您需要安装某种Python兼容的数据库模块。 MySQLdb我相信有一个Python实现。然后,您需要序列化从Web请求中获取的数据并使用某种持久性API。我相信pickle模块处理Python持久性。持久性或多或少地保存了数据。