django中的URL缩短

时间:2016-05-27 18:29:31

标签: python django

我想写一个小的django应用程序,它会缩短项目的所有内部网址。直到现在我已经得到short_url,这正是我们想要的。除了它只接受一个int。现在还有一些我们需要在url中编码的其他参数。需要知道如何做到这一点。

最初我们虽然基于 hash 的实现,但是我们需要将它存储在我们的数据库中,这样做并不好。

使用密钥加密数据也是一种选择,但输出对于短网址来说太长了。

有人可以建议可以用于相同的库或算法。与short_url不同,我们也有ascii数据。并且我们希望应用程序尽可能无状态(在DB中没有存储)或者如果不可用,至少在每次生成url时都不检查DB(低/无冲突)

修改

目前我们将url格式设置为/ project / application .application是一个与项目关联的列表。现在我们需要的是一个双向函数,它接受项目+应用程序并提供短网址。 (例如,Gjd73)。项目名称由out用户定义,应用程序名称在我们的数据库中预定义。

可以有任意数量的项目和应用程序,它们都是ascii,但因为pk值也可以用于比ascii名称更有用的情况。

1 个答案:

答案 0 :(得分:1)

如果在您的数据库中,每个"应用程序"是ForeignKey - 与父项"项目"相关,您可以放弃"项目"您的URL路径的名称/ ID。

exmple.com/12345这样的路径(其中" 12345"是您的应用pk)大约是它的最短路径。

你甚至可以缩短它并Base64 encode这个数字,这样你就可以得到更短的alphanum值。