1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

UUIDを使用したID生成法

Last updated at Posted at 2021-03-17

はじめに

Djangoを使用したwebサービス開発の学習をしている際、画像のデータをUUIDを使用して命名することにした。
この記事にはUUIDを使用したid生成法を記載する。

UUIDとは

UUIDとは
いつでも誰でも作れるけど、作ったIDは世界中で重複しないことになっているID

引用:「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典 UUID

UUIDはIDは世界中で重複することがない(重複する可能性が非常に低い)文字列で、このIDを使用しデータの管理をしようと考えた。

コード

UUID生成プログラム

import uuid

a = str(uuid.uuid4())
print(a)

UUIDを生成するだけであれば、uuidをimportし、uuid.uuid4()とするだけでidを生成することは可能。
得られたidはstrで型変換を行うことで文字列として扱うことができる。

strの型変換を行わない場合
>> UUID('66d99be0-4b81-47e4-bf66-a34098183806')

型変換を行った場合
>> '66d99be0-4b81-47e4-bf66-a34098183806'

django に組み込む

記事作成プログラム
def create(request):
    #投稿された画像名を取得
    name = "media/images/" + str(request.FILES['picture'])
    #投稿された画像名を ユーザー名+記事タイトル+UUID+.png に変更
    renamed = ("media/images/" + ((str(request.POST['picture_name']) + str(request.POST['title'])).replace(" ", "_")) + str(uuid.uuid4()) + ".png")
    #テーブルの生成
    table = Register.objects.create(
        title = request.POST['title'],
        owner = request.POST['owner'],
        table_id = request.POST['table_id'],
        picture = request.FILES['picture'],
        picture_name = renamed,
    )
    table.save()
    os.rename("register/" + name,"register/" + renamed)   

まとめ

今回はプログラミングの学習として、自分なりに考えた結果UUIDでのデータ管理を行うことにしたが、データ量を減らすことや他のデータとの紐づけるということを考えるとUUIDは最善のデータの命名方法ではないと考える。今後改善を続けていきたい。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?