【django】モデルにURL専用のフィールドを追加する方法 (models.URLField)

モデルでURLを扱いたいときはdjangoにURLFieldというURL専用のフィールドが用意されています

今回はURLFieldの使い方と特性について解説します

目次

URLFieldの使い方

ブログのモデルにそれに関連したURLを追加する形でフィールドを追加します

class Blog(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField(blank=True)
    category = models.ForeignKey(Category, on_delete=models.SET_NULL, blank=True, null=True)
    web_site = models.URLField(blank=True) #追加
    updated_at = models.DateTimeField(auto_now=True)
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title

    class Meta:
        db_table = 'blogs'

正直これだけなので,この変更をdjangoに反映します

python manage.py makemigrations blog
python manage.py migrate

djangoの管理サイトにアクセスしてURLフィールドを更新しましょう

python記事に公式URLを追加してみました

url

これで完了です

URLFieldの特性

URLFieldの特性をいろいろみていきます

URLFieldのValidationの実装

まずバリデーションチェックを行いましょう

URLに適当な文字列を打って,保存してみます

validation

すると有効なURLを入力してくださいとエラーが出るようになっています

このバリデーションにはURLValidatorが用いられています

URLValidatorとは?

RegexValidatorのサブクラスで,文字列がURLに似ていることを確認し,似ていない場合は「invalid」のエラーコードを発生させます

ループバックアドレスと予約済みのIPスペースは有効とみなされます.

リテラルのIPv6アドレス(RFC 3986#section-3.2.2)とUnicodeドメインの両方がサポートされています

バリデーションを行うURL/URI スキームのリストのデフォルトは[‘http’, ‘https’, ‘ftp’, ‘ftps’] です

URLFieldのmax_length

URLFieldの最大文字数はデフォルトで200が設定されています

このmax_lengthは省略可能です

今回は以上です

お疲れ様でした

シェアしてくださると嬉しいです!
  • URLをコピーしました!

コメント

コメントする

目次