Python 在Django建立链接缩短器

Python 在Django建立链接缩短器,python,django,web,url-redirection,Python,Django,Web,Url Redirection,我正在使用Django1.9构建一个链接缩短器。我创建了一个简单的HTML页面,用户可以在其中输入长URL。我还编写了缩短此URL的方法。数据存储在数据库中,我可以向用户显示缩短的URL 我想知道我下一步要做什么。当用户访问较短的URL时会发生什么情况?我应该使用重定向还是其他什么?我对这个话题一无所知。通常,当你提供一个url缩短器时,调用url后,你必须通过永久移动的301重定向到主url def resolve_url(request,url): origin_url=resolv

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


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

通常,当你提供一个url缩短器时,调用url后,你必须通过永久移动的
301重定向到主url

def resolve_url(request,url):
    origin_url=resolve(url) # read from redis or so.
    return HttpResponseRedirect(origin_url)
编辑
使用@danny cullen hint添加代码通常,当您提供url缩短器时,调用url后,您必须通过永久移动的
301重定向到主url

def resolve_url(request,url):
    origin_url=resolve(url) # read from redis or so.
    return HttpResponseRedirect(origin_url)
编辑
使用@danny cullen hint添加代码你可以通过
HttpResponseRedirect
导航到URL你可以通过
HttpResponseRedirect
导航到URL,而不是在每个视图中都写相同的代码,如果缩短的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)
编写一个,而不是在每个视图中编写相同的代码,这样,如果缩短的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)

您是否使用任何第三方软件包来缩短url或编写自己的逻辑来缩短url?@MicroPyramid我已经编写了自己的方法。是的,使用重定向-在数据库中查找实际url,然后返回永久url(这样浏览器将在将来直接指向那里)重定向到该站点。重定向到原始URL是此处所需的功能。有些服务会自动重定向,有些会在延迟后重定向,而有些则需要手动单击,如果缩短的url位于您存储的模型中,您可以使用HttpResponseRedirect将缩短的url重定向到长url。您是否使用任何第三方软件包来缩短url或编写自己的逻辑来缩短url?@MicroPyramid我已经编写了自己的方法。是,使用重定向-在数据库中查找实际URL,然后返回一个永久重定向(以便浏览器将来直接指向该站点)。重定向到原始URL是此处所需的功能。有些服务会自动重定向,有些会在延迟后重定向,而另一些则需要手动单击。我认为,编写一个中间件,这样,如果缩短的url位于您存储的模型中,您可以使用HttpResponseRedirect将缩短的url重定向到长url。您好,我有一个问题。短url首先如何调用此函数?嗨,我有一个问题。短url首先如何调用此函数?