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

问题描述:

我想添加到我的django应用程序的一个功能是用户可以创建一些内容(无需注册/创建帐户),然后生成用户可以使用的特定于内容的链接与他人分享。点击链接会让用户回到他们创建的内容。如何在django中生成可共享的链接? (类似于pastebin链接)

基本上,我想的行为是类似像引擎收录网站 - 在用户得到他们可以与其他人共享一个引擎收录的链接(例如:http://pastebin.com/XjEJvSJp

我不知道什么是最好的方式是产生这些类型的链接 - 有没有人有任何想法?

谢谢!

只要每个链接都是唯一的,您可以以任何您想要的方式创建这些链接。例如,获取内容的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"), 

你的想法...

+0

这太好了,谢谢! – user256604 2011-01-10 20:31:22

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

基本上你只需要一个视图,存储数据和显示来看。

例如存储与:

server.com/objects/save 

,然后储存新的模式后,它可以与

server.com/objects/[id] 

哪里[id]是当你保存你所创建的模型的ID到达。

这不需要用户登录 - 它也可以为匿名用户工作。

如果你不介意你的URL会变得更长,你可以看看uuid模块。这应该保证唯一的ID。