使用BeautifulSoup填充Django模型

时间:2013-01-09 05:10:42

标签: python django django-models beautifulsoup

我正在构建一个允许用户提交链接的网站。我想使用BeautifulSoup(或其它适用于任务的其他方法)从提交的URL中提取标题标记,并将其显示在列出用户提交的链接的页面上。

我在此页面上尝试了第二个答案:How can I retrieve the page title of a webpage using Python?

它适用于shell,但我不知道在哪里/如何使用soup.title.string来填充模型。

如果您需要到目前为止我尝试过的代码示例,请询问。我没有发布它,因为我尝试过运行一些不同的东西。

观点代码:

    def page_save(request):
  if request.method == 'POST':
    form = PageSaveForm(request.POST)
    if form.is_valid():
      # Create or get link.
      link, dummy = Link.objects.get_or_create(
        url=form.cleaned_data['url']
      )
      # Create or get bookmark.
      page, created = Page.objects.get_or_create(
        user=request.user,
        link=link
        soup=BeautifulSoup.BeautifulSoup(urllib.urlopen(link))
        title=soup.title.string

显然,间距是关闭的。

如果用户只保存链接然后我让模板从每个链接中拉出标题并将其显示给最终用户,我会很高兴。

或者甚至在我粘贴网址时预览中的操作。

1 个答案:

答案 0 :(得分:1)

编辑:误解了这个问题......

查看您的模型会很有帮助。创建页面的代码看起来很可疑。汤是你模特中的一个领域吗?也许这就是你想要做的?

page, created = Page.objects.get_or_create(
    user=request.user,
    link=link,
    title=BeautifulSoup.BeautifulSoup(urllib.urlopen(link)).title.string
  )

一些更大的问题。当您的用户提交恶意或无效链接时会发生什么?当网址超时时会发生什么?除此视图之外还有其他时间您可能想从页面实例中获取链接并创建标题吗?