如果我的第 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
在我的模型中,我需要保存以下内容,例如 f
到 forum
(其中 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