Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Django로 URL 단축 앱 만들기: pyshorteners 활용 가이드


이 글에서는 Django로 URL 단축(URL Shortener) 앱을 만드는 방법을 단계별로 살펴봅니다. 이 앱은 사용자가 입력한 긴 URL을 짧은 URL로 변환해 주는 간단한 도구입니다. 특히 Django 전용 라이브러리가 아닌 범용 Python 라이브러리를 사용하기 때문에, 이 코드는 다른 어떤 Python 프로젝트에서도 그대로 재사용할 수 있다는 장점이 있습니다.

먼저 Django 프로젝트와 앱을 생성한 뒤, settings.pyINSTALLED_APPS에 해당 앱을 등록하고 프로젝트의 urls.py에 앱의 URL 설정을 포함시키는 등 기본 설정을 완료해 주세요.

1단계: pyshorteners 라이브러리 설치

URL 단축 기능은 pyshorteners 모듈을 통해 구현합니다. 아래 명령어로 설치할 수 있습니다.

pip install pyshorteners

pyshorteners는 TinyURL, Bitly 등 다양한 URL 단축 서비스를 하나의 인터페이스로 사용할 수 있게 해주는 라이브러리입니다. 이 예제에서는 별도의 API 키 없이 바로 사용할 수 있는 TinyURL 서비스를 활용합니다.

2단계: URL 라우팅 설정 (urls.py)

앱의 urls.py에 아래와 같이 작성합니다.

from django.urls import path
from .views import url_shortner

urlpatterns = [
    path('', url_shortner.as_view(), name="url-shortner"),
]

여기서는 사이트의 홈 URL('')에 url_shortner 뷰를 연결했습니다.

3단계: 뷰 작성 (views.py)

이제 views.py에 실제 로직을 담은 뷰를 작성합니다.

from django.shortcuts import render
import pyshorteners
from django.views import View

class url_shortner(View):
    def post(self, request):
        long_url = 'url' in request.POST and request.POST['url']
        pys = pyshorteners.Shortener()
        short_url = pys.tinyurl.short(long_url)
        return render(request,'urlShortner.html', context={'short_url':short_url,'long_url':long_url})

    def get(self, request):
        return render(request,'urlShortner.html')

이 뷰는 두 개의 요청 핸들러 함수로 구성되어 있습니다.

  • GET 핸들러: 사용자가 페이지에 처음 접속했을 때 URL 입력 폼이 있는 프론트엔드 HTML을 렌더링합니다.
  • POST 핸들러: 폼에서 전송된 긴 URL을 받아 pyshorteners로 단축한 뒤, 단축된 URL과 원본 URL을 컨텍스트에 담아 프론트엔드를 다시 렌더링합니다.

4단계: 템플릿 작성 (urlShortner.html)

앱 디렉터리 안에 templates 폴더를 생성하고, 그 안에 urlShortner.html 파일을 추가한 후 아래 코드를 작성합니다.

<!DOCTYPE html>
<html>
    <head>
        <title>Url Shortner</title>
    </head>
    <body>
        <div>
            <h1>URL Shortner Application</h1>
            <form method="POST">{% csrf_token %}
                <input type="url" name="url" placeholder="Enter the link here" required>
                <button>Shorten URL</button>
            </form>
        </div>
        {% if short_url %}
        <div>
            <h3>Your shortened URL</h3>
            <div>
                <input type="url" id="short_url" value={{short_url}}> <button name="short-url">Copy URL</button> <small id="copied" class="px-5"></small>
            </div>
            <br>
            <span><b>Long URL: </b></span> <a href="{{long_url}}">{{long_url}}</a>
        </div>
        {%endif%}
    </body>
</html>

이 프론트엔드는 사용자가 긴 URL을 입력하면 POST 요청으로 서버에 전송하고, 응답으로 받은 단축 URL을 화면에 표시합니다. 또한 {% if short_url %} 조건문 덕분에 단축 결과가 존재할 때만 결과 영역이 나타나며, 복사 버튼과 원본 URL 링크도 함께 제공됩니다.

실행 결과

Django로 URL 단축 앱 만들기: pyshorteners 활용 가이드

개발 서버를 실행한 뒤 긴 URL을 입력하고 "Shorten URL" 버튼을 누르면, TinyURL을 통해 생성된 짧은 URL이 화면에 출력되는 것을 확인할 수 있습니다. 이처럼 몇 줄의 코드만으로도 실용적인 URL 단축 서비스를 손쉽게 구축할 수 있습니다.