2013-01-09 99 views
0

我正在构建一个允许用户提交链接的站点。我想使用BeautifulSoup(或者其他的东西,如果它对任务更好),从提交的URL中提取标题标签并将其显示在列出用户提交的链接的页面上。使用BeautifulSoup来填充Django模型

我尝试这个页面上的第二个答案: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 

的间距是关闭的,很明显。

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

甚至当我粘贴一个URL时,它在预览中会做什么。

+1

随意发布您目前所使用的代码 - 它有助于为您的情况添加上下文,并为人们提供一个起点(并欢迎您加入:))。 – RocketDonkey

+0

“太多代码”是一个问题是非常罕见的。 – cwallenpoole

回答

1

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

这将是有益的,看看你的模型。创建页面的代码看起来很可疑。在你的模型中汤是一个领域?也许这就是你想要做的?

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

给你一些更大的问题。当用户提交恶意或无效的链接时会发生什么?当URL超时时会发生什么?有没有其他时间超出这种观点,你可能想从你的页面实例中获取链接并创建一个标题?

+0

感谢您的欢迎和回复。我用一些代码更新了原件... – brandonjschwartz

+0

谢谢@tobypanzer。你问的问题也帮助:) – brandonjschwartz