【问题标题】:Building a link shortener in Django [closed]在 Django 中构建链接缩短器 [关闭]
【发布时间】:2016-10-21 17:10:26
【问题描述】:

我正在使用 Django 1.9 来构建链接缩短器。我创建了一个简单的 HTML 页面,用户可以在其中输入长 URL。我还编写了缩短此 URL 的方法。数据存储在数据库中,我可以向用户显示缩短的 URL。

我想知道我接下来要做什么。当用户访问较短的 URL 时会发生什么?我应该使用重定向还是其他方式?我对这个话题一无所知。

【问题讨论】:

  • 您是使用第三方包来缩短网址还是自己编写逻辑来缩短网址?
  • @MicroPyramid 我已经编写了自己的方法。
  • 是的,使用重定向 - 在您的数据库中查找实际的 URL,然后返回一个永久的(因此浏览器将来会直接到那里)重定向到该站点。
  • 重定向到原始 URL 是此处所需的功能。有些服务会自动重定向,有些会在延迟后进行,而其他一些需要手动点击。
  • 编写一个中间件,如果缩短的 url 在您存储的模型中,您可以使用 HttpResponseRedirect 将缩短的 url 重定向到长 url。

标签: python django web url-redirection


【解决方案1】:

编写middleware,而不是在每个视图中编写相同的代码,这样,如果缩短的 url 在您存储的模型中,您可以使用 HttpResponseRedirect 将缩短的 url 重定向到长 url。

class RedirectMiddleware(object):
    # Check if client IP is allowed
    def process_request(self, request):
       '''you can get the current url from request and just filter with the model and redirect to longurl with HttpResponseRedirect.'''
        return HttpResponseRedirect(full_url)

【讨论】:

    【解决方案2】:

    通常,当您提供 url shortner 时,调用该 url 后,您必须通过 301 Permanently moved 重定向到主 url。

    def resolve_url(request,url):
        origin_url=resolve(url) # read from redis or so.
        return HttpResponseRedirect(origin_url)
    

    编辑: 使用@danny-cullen 提示添加代码

    【讨论】:

    • 嗨,我有一个问题。短网址如何首先调用此函数?
    【解决方案3】:

    您可以通过 HttpResponseRedirect 导航到 URL

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-12
      • 1970-01-01
      • 2014-07-05
      • 2016-12-20
      • 1970-01-01
      相关资源
      最近更新 更多