私はDjango 1.9を使ってリンク短縮を構築しています。ユーザーが長いURLを入力できるシンプルなHTMLページを作成しました。私はこのURLを短縮するためのメソッドもコーディングしました。データはデータベースに格納されており、短縮URLをユーザーに表示できます。Djangoでリンク短縮を構築する
私は次に何をしなければならないか知りたい。ユーザーが短いURLにアクセスするとどうなりますか?リダイレクトなどを使用する必要がありますか?私はこの話題について全く無知です。
私はDjango 1.9を使ってリンク短縮を構築しています。ユーザーが長いURLを入力できるシンプルなHTMLページを作成しました。私はこのURLを短縮するためのメソッドもコーディングしました。データはデータベースに格納されており、短縮URLをユーザーに表示できます。Djangoでリンク短縮を構築する
私は次に何をしなければならないか知りたい。ユーザーが短いURLにアクセスするとどうなりますか?リダイレクトなどを使用する必要がありますか?私はこの話題について全く無知です。
通常、URLを呼び出すと、301 Permanently moved
によってメインURLにリダイレクトする必要があります。
def resolve_url(request,url):
origin_url=resolve(url) # read from redis or so.
return HttpResponseRedirect(origin_url)
EDIT: 追加コードを使用する@ダニー・カレンヒント
あなただけの、そのようmiddlewareを書く代わりに、すべてのビューで同じコードを書くHttpResponseRedirect
を経由してURLに移動でき短縮されたURLが格納されているモデルにあれば、短縮URLをHttpResponseRedirectを使って長い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
@ MicroPyramid私は自分の方法を書いています。 –
はい、リダイレクトを使用します - データベース内の実際のURLを検索してから、そのサイトにリダイレクトされた永続的な(したがってブラウザが直進します)。 – jonrsharpe