モデルで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を追加してみました
これで完了です
URLFieldの特性
URLFieldの特性をいろいろみていきます
URLFieldのValidationの実装
まずバリデーションチェックを行いましょう
URLに適当な文字列を打って,保存してみます
すると有効な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は省略可能です
今回は以上です
お疲れ様でした
コメント