はじめに
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は最善のデータの命名方法ではないと考える。今後改善を続けていきたい。