코딩이야기

UUID(Universally Unique Identifier) 본문

KnowHows

UUID(Universally Unique Identifier)

기획자 비제이 2024. 6. 25. 18:00

URL에 숫자와 영어가 섞인 고유 식별자를 사용하는 방법은 UUID(Universally Unique Identifier)를 사용하면 된다.
UUID는 고유한 문자열로, 숫자와 영어 알파벳이 혼합된 형식으로 생성된다.
예) 유튜브 주소 
이를 사용하면 각 페이지에 대해 고유하고 예측할 수 없는 식별자를 부여할 수 있다. 

UUID를 사용하는 방법

  1. 모델에 UUID 필드 추가: 모델에 UUID 필드를 추가하고, 이를 primary key로 설정할 수 있다.
  2. URL 패턴 설정: UUID를 포함하는 URL 패턴을 설정.
  3. 뷰에서 UUID 사용: UUID를 사용하여 포스트를 조회하고 처리.

단계별 구현

1. 모델 정의

Post 모델에 UUID 필드를 추가하고, 이를 primary key로 설정.

 

from django.db import models
import uuid
from django.contrib.auth.models import User

class Post(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    title = models.CharField(max_length=255)
    content = models.TextField()
    image = models.ImageField(upload_to='post_images/')
    created_at = models.DateTimeField(auto_now_add=True)
    author = models.ForeignKey(User, on_delete=models.CASCADE, related_name='posts')

    def __str__(self):
        return self.title

 

2. URL 패턴 설정

UUID를 포함하는 URL 패턴을 설정.

 

from django.urls import path
from . import views

urlpatterns = [
    path('pin/<uuid:pk>/', views.PostDetailView.as_view(), name='post_detail'),
]

 

3. 뷰 설정

UUID를 사용하여 포스트를 조회하는 뷰를 설정.

 

from django.views.generic.detail import DetailView
from .models import Post

class PostDetailView(DetailView):
    model = Post
    template_name = 'post_detail.html'

 

 

4. 템플릿 설정

상세 페이지를 보여주는 템플릿을 설정
예) post_detail.html 파일

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{{ post.title }}</title>
</head>
<body>
    <h1>{{ post.title }}</h1>
    <p>{{ post.content }}</p>
    <img src="{{ post.image.url }}" alt="{{ post.title }}">
    <p>Author: {{ post.author.username }}</p>
    <p>Created at: {{ post.created_at }}</p>
</body>
</html>