如果我的第 3 方 js 脚本嵌入在网站上,如何自动保存每篇新文章的标题

Posted

技术标签:

【中文标题】如果我的第 3 方 js 脚本嵌入在网站上,如何自动保存每篇新文章的标题【英文标题】:How to automatically save the headline for every new article provided my 3rd party js script is embed on a website 【发布时间】:2015-12-09 12:32:18 【问题描述】:

我正在开发一个类似于 Disqus 的东西,我创建了一个第三方 javascript sn-p,用户将把它嵌入到网站中,并为每篇文章提供一个评分小部件。用户可以使用小部件对文章进行评分。一切正常,服务器正在发出请求,但我正在明确地创建文章对象实例。

我需要自动执行此操作,例如网站上的新文章,检查请求是否来自经过身份验证的网站,并在 Django 和 Django-rest-framework 的数据库中创建一个新的评级小部件。

我正在使用 Python 2.7。

问题: 如果新文章的标题在数据库中是新的并且经过验证,我如何自动保存新文章的标题?

我知道我需要使用模型来实现这一点,但我不确定如何进行实际实现。

编辑:

假设这是查询

https://example.com/embed/comments/?base=default&version=edb619270a92c3035c453faa7c9444d1&f=example&t_i=article_2431522&t_u=http%3A%2F%2Fwww.firstpost.com%2Fbollywood%2Flatest-trailer-of-spectre-is-out-james-bond-is-back-all-guns-and-cars-blazing-2431522.html%09&t_e=Latest%20trailer%20of%20%27Spectre%27%20is%20out%3A%20James%20Bond%20is%20back%20all%20guns%20and%20cars%20blazing&t_d=Latest%20trailer%20of%20%27Spectre%27%20is%20out%3A%20James%20Bond%20is%20back%20all%20guns%20and%20cars%20blazing&t_t=Latest%20trailer%20of%20%27Spectre%27%20is%20out%3A%20James%20Bond%20is%20back%20all%20guns%20and%20cars%20blazing&s_o=default

在我的模型中,我需要保存以下内容,例如 fforum(其中 forum=models.CharField("short name", max_length=30, unique=True

我知道我需要解析每个 & 的 url,但不知道如何。我检查了rest-framework的文档,但我没有得到它的要点。

    `f ---->forum,
    t_i----> identifier,
    t_u----> url 
    t_s----> slug,
    t_e----> title,
    t_d----> documentTitle,
    t_t----> title || documentTitle,
    t_c ---->category,
    s_o----> sortOrder,
    l----> language`

保存的最佳做法是什么? 希望这会有所帮助

【问题讨论】:

这是一个非常开放的问题。有什么方法可以详细说明并使其更具体? 如果您将 CSRF 保护嵌入到不同域的站点中,则需要研究它。至于创建模型的实例,您可以在适当的时候从 javascript 小部件向您的服务器执行 AJAX POST(假设您使用的是 Django Rest Framework)。这将为您需要创建的任何模型创建一个新实例。 @miki725 我添加了细节 【参考方案1】:

我只回答你最后说的问题:“如何自动保存新文章的标题”

您说得对,您需要创建一个反映第 3 方网站文章的文章模型。

它需要有一个标题/标题字段(可能是 CharField),确保你把它做得足够大和/或处理标题更大的情况。

您还需要为每篇文章提供一个唯一的 ID。理想情况下,您将使用 3rd 方站点使用的任何内容作为唯一 ID,而不是使用 Django 的默认值作为一对一映射。

然后,只要有请求进来,您就可以使用 get_or_create 方法来确保文章存在于您的数据库中。

【讨论】:

我已经想通了,除了你的最后一句话。这正是我的问题。你能详细说明最后一句话吗?我不想要代码。我需要更新 serializers.py 吗?提前谢谢你,猕猴桃 它是查询集 API 的一部分 docs.djangoproject.com/en/1.8/ref/models/querysets/… viewset 和 api 默认不调用它。在这种情况下,我会说您需要覆盖视图/视图集的 get_object 方法,并在此处执行检索或创建。

以上是关于如果我的第 3 方 js 脚本嵌入在网站上,如何自动保存每篇新文章的标题的主要内容,如果未能解决你的问题,请参考以下文章

如何在我的网站上执行以下操作? [关闭]

如何在不重新加载页面的情况下从 FF Web 扩展内容脚本更改 3rd 方网站上的 Angular 应用程序路由/URL

如何在我的网站上嵌入 Flash 对象?

将网站嵌入我的网站

如果集合视图嵌入到 ios 的表视图中,如何始终显示集合视图的第一项

如何重新加载经常崩溃的第 3 方 DLL