Python 如何在没有数据库的情况下创建短URL

Python 如何在没有数据库的情况下创建短URL,python,django,url,encryption,url-shortener,Python,Django,Url,Encryption,Url Shortener,可能重复: 这是一个大学django项目。。在这里,我无法真正设置数据库模型来存储动态生成的URL,并根据哈希主键重定向到短URL。。等 我正在考虑使用某种算法加密URL并在服务器上解密。起初,我想使用md5哈希,但我想我们无法解密 我的实际URL如下所示: http://mydomain.com/photo?friend_name=dennis&me_name=ritchie&ping_url=http%3A%2F%2Fmydomain.com%2Fimg%3Furl%3Dh

可能重复:

这是一个大学django项目。。在这里,我无法真正设置数据库模型来存储动态生成的URL,并根据哈希主键重定向到短URL。。等

我正在考虑使用某种算法加密URL并在服务器上解密。起初,我想使用md5哈希,但我想我们无法解密

我的实际URL如下所示:

http://mydomain.com/photo?friend_name=dennis&me_name=ritchie&ping_url=http%3A%2F%2Fmydomain.com%2Fimg%3Furl%3Dhttps%3A%fsjcsd.googleueusercontent.com%2F-Sf6bP2nOKa8%2FUMaw8vv0QLI%2FAaaddjhnkchkjda7E%2Fs800%2FHosbsco.png%26message%3Dhi+dude
我认为它可以转化为:

http://mydomain.com?encode=hksfhsfksuhkvbkjnukvns
然后在服务器端,我想将
hksfksuhkvbkjnukvns
转换回实际的字符串


我有Python库吗?你可以使用url压缩+加密/base64方法

对于压缩,您可以检查python的zlib或任何其他无损压缩库(lzma等),然后通过base64将压缩的二进制字符串转换为ascii。请注意,您的url的zlib+base64比原始url更糟糕

但url可能永远不会像您期望的那样短,这仅仅是因为url内容包含大量信息、压缩率差等等。因此,此解决方案可能永远无法满足具有文本长度限制的应用程序(如twitter)的需要

所以,如果你想要一个很短的url,必须有一个地方来存储短-长对

记住这些,我在谷歌上搜索了“url短缩器”,并弹出了很多

这些是第三方web应用程序,仅用于执行此任务:

  • 来自谷歌
  • 我的第一次搜索成功
  • 大量较短的应用程序列表
  • goo.gl/zyHmS好吧,我只是想把goo.gl弄出来

不过,希望您可以使用第三方应用程序。

您可以使用url压缩+加密/base64方法

对于压缩,您可以检查python的zlib或任何其他无损压缩库(lzma等),然后通过base64将压缩的二进制字符串转换为ascii。请注意,您的url的zlib+base64比原始url更糟糕

但url可能永远不会像您期望的那样短,这仅仅是因为url内容包含大量信息、压缩率差等等。因此,此解决方案可能永远无法满足具有文本长度限制的应用程序(如twitter)的需要

所以,如果你想要一个很短的url,必须有一个地方来存储短-长对

记住这些,我在谷歌上搜索了“url短缩器”,并弹出了很多

这些是第三方web应用程序,仅用于执行此任务:

  • 来自谷歌
  • 我的第一次搜索成功
  • 大量较短的应用程序列表
  • goo.gl/zyHmS好吧,我只是想把goo.gl弄出来

不过,希望您可以使用第三方应用程序。

请看这个类似的问题:可能不实用-您最好的选择可能是base64编码,但这为您的示例输入URL提供了一个291字节的字符串,这稍微扩展了“short”的要求。@DominicRodger okay。。如果它易于实现和工作将。与原始字符串中的219个字符相比,不是issuebase64使事情变长,不是变短。base64产生256个字符(即使您压缩输入)。请参见类似的问题:可能不实用-您的最佳选择可能类似于base64编码,但这为您的示例输入URL提供了291字节的字符串,这将“短”的要求延伸了一点。@DominicRodger好的。。如果它易于实现和工作将。与原始字符串中的219个字符相比,非issuebase64会使内容变长而不是变短。base64会生成256个字符(即使压缩输入)。