如何在django中生成可共享的链接? (类似于pastebin链接)

时间:2011-01-09 03:16:17

标签: python django

我想添加到我的django应用程序的一个功能是用户能够创建一些内容(无需注册/创建帐户),然后生成用户可以与他人共享的特定于内容的链接。点击链接会将用户带回他们创建的内容。

基本上,我希望这种行为与像pastebin这样的网站类似 - 用户可以获得可以与其他人共享的pastebin链接(例如:http://pastebin.com/XjEJvSJp

我不确定生成这些类型链接的最佳方法是什么?有没有人有任何想法?

谢谢!

4 个答案:

答案 0 :(得分:1)

通常所有由一个(可能是随机的,可能是连续的)令牌加上内容,存储在数据库中,然后按需提供。

答案 1 :(得分:1)

如果您不介意您的网址会更长一些,您可以查看uuid模块。这应该保证唯一的ID。

答案 2 :(得分:0)

只要每个链接都是唯一的,您就可以以任何方式创建这些链接。例如,获取内容的MD5并使用十六进制摘要的前8个字符。

一个简单的模型可能是:

class Permalink(models.Model):
    key = models.CharField(primary_key = True, max_length = 8)
    refersTo = models.ForeignKey(MyContentModel, unique = True)

您还可以使refersTo属性自动分配唯一键(如上所述)。

您需要一个匹配的网址:

url("^permalink/(?P<key>[a-f0-9]{8})$",
    "view.that.redirects.to.permalink.refersTo"),

你明白了......

答案 3 :(得分:0)

基本上你只需要一个存储数据的视图和一个显示它的视图。

e.g。存储:

server.com/objects/save

然后,在存储新模型后,可以使用

来访问它
server.com/objects/[id]

其中[id]是您保存时创建的模型的ID。

这不需要用户登录 - 它也适用于匿名用户。