<p>您可能需要为此使用特定的模型:</p>
<p><strong>型号.py</strong>
你知道吗</p>
<pre><code>class Redirection(models.Model):
shortened = models.CharField("Shortened URL", max_length=50)
url = models.URLField("Url", help_text='Your shortened URI will be computed')
class Meta:
verbose_name = "Redirection"
verbose_name_plural = "Redirections"
def save(self, *args, **kwargs):
if not self.shortened:
self.shortened = self.computed_hash
super(Redirection, self).save(*args, **kwargs)
@property
def computed_hash(self):
return your_hashing_algo(self.url)
</code></pre>
<p><strong>网址.py</strong></p>
<pre><code>from .views import redirect
urlpatterns = [
path('(?P<surl>[a-zA-Z0-9_-]+)/', redirect)
]
</code></pre>
<p>最后,<strong>视图.py</strong></p>
<pre><code>from django.views.decorators.cache import cache_page
from django.shortcuts import (get_object_or_404, redirect)
from .models import Redirection
@cache_page(3600)
def redirect(request, surl):
url = get_object_or_404(Redirection,shortened=surl)
return redirect(url)
</code></pre>
<p>你可以很容易地调整它,给模型一个寿命,重定向计数器(注意缓存!)你知道吗</p>