【毎日改善6日目】タイトルの文字数制限変更
投稿者: urumos
作成日: 2022年6月17日8:08
更新日: 2022年6月17日8:08
カテゴリ: Django
タグ:
【毎日改善6日目】タイトルの文字数制限変更
今日は記事タイトルの文字制限を上げてみよう。
アプリ自体のコードをいじるのは久しぶりだ。
データベースを変更するのだろうけど、
すっかり覚えていないのでDjangoビギナーズブックを見返す。
DjangoMyBlog/blog/models.pyを編集
class Post(models.Model):
title = models.CharField('タイトル', max_length=32)
text = models.TextField('本文')
category = models.ForeignKey(Category, on_delete=models.PROTECT, verbose_name='カテゴリ')
tags = models.ManyToManyField(Tag, verbose_name='タグ', blank=True)
writer = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT, verbose_name='投稿者')
created_at = models.DateTimeField('作成日', auto_now_add=True)
updated_at = models.DateTimeField('更新日', auto_now=True)
def __str__(self):
return self.title
単に下記部分の32を書き換えればいいのかな
title = models.CharField('タイトル', max_length=32)
32となっているけど、今そんなか?もっと少ない気がするが、、
まず全角数字で確認してみる
確かに32だった
32文字って以外と短いのね
半角数字の場合はどうか→32だった
英語の場合はどうか→32だった
全角半角関係ないんだね。
とりあえず100にしてみる。
まずはローカルで起動してみる。
画像が表示されておらず、管理画面のCSSも効いていない
とりあえずタイトルの文字制限が100文字になっているか確認。
なってる!OK!
ここからは本題と違うが、ローカルでCSSと画像(つまり静的ファイル)が効いていない問題を解決する
そういえばmodels.pyを変更したら下記をしなきゃじゃね?と思い出し実行。
①「マイグレーションファイル」を作成する
py manage.py makemigrations {アプリ名}
※このコマンドにより、そのアプリディレクトリ内のmodels.pyの内容を元に、
「(アプリ名)/migrations」フォルダ内に「0001_initial.py」などの「マイグレーションファイル」が作られる。
※「マイグレーションファイル」とは、データベースにSQL文を送るための前段階のファイル。
②DBテーブルへSQLを送る
py manage.py migrate
※このコマンドにより、事前に作成したマイグレーションファイルをもとに、
DjangoはDBに実際のSQLを発行し、テーブルを作成する。
実際①②をやったら下記のようになった
(.MyBlogEnv) PS C:\Dev\DjangoMyBlog> py manage.py makemigrations blog
Migrations for 'blog':
blog\migrations\0001_initial.py
- Create model Category
- Create model Tag
- Create model Post
- Create model Comment
(.MyBlogEnv) PS C:\Dev\DjangoMyBlog> py manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, blog, contenttypes, sessions
Running migrations:
No migrations to apply.
(.MyBlogEnv) PS C:\Dev\DjangoMyBlog>
あれ、意味なかったか?
CSSも効いてない。
CSSが効いていない理由を調べる
AWS側での静的ファイル配信の設定をした時に色々いじったのが問題と予測。
【3日目】ブログのロゴ付け【毎日改善チャレンジ】
で下記を追加していた
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static")
]
が、
【その10】静的ファイル配信【初めてのAWSデプロイ編】
でその部分を削除していた。
STATICFILES_DIRSってなんだっけ?
どうやらあまり重要ではなく、プラスアルファの感じかな?
さて、なぜ見れないのか。
下記サイトがすごく丁寧に静的ファイルの扱いを基礎から解説してくれている。
https://daeudaeu.com/django-staticfile/
教科書も再度見返してみる。
すると、appディレクトリ内のurls.pyとconfig内のurls.pyで混同しているのではないかと気づいた
と、思ったら勘違いだった
上記の記事を再度よく読む
すると下のほうに下記の記述
を設定した場合、静的ファイルのリクエストを受け取った場合でも、
Django の開発用ウェブサーバーソフトは検索先フォルダからの静的ファイルの取得を行わなくなってしまいます。
つまり、Debug = False を設定すると静的ファイルのリクエストに対するレスポンスが毎回 Not Found になります。」
はっ!と思い、ローカルの.envを確認
Debug = False になっとーーーるーーーー!!
そういえばGoogleアナリティクスを導入した時にTrueからFalseに変えて、そのままになってたわ、、
何か試したらちゃんと元に戻すのが大事ね。
ということで解決!
今日は記事タイトルの文字制限を上げてみよう。
アプリ自体のコードをいじるのは久しぶりだ。
データベースを変更するのだろうけど、
すっかり覚えていないのでDjangoビギナーズブックを見返す。
DjangoMyBlog/blog/models.pyを編集
class Post(models.Model):
title = models.CharField('タイトル', max_length=32)
text = models.TextField('本文')
category = models.ForeignKey(Category, on_delete=models.PROTECT, verbose_name='カテゴリ')
tags = models.ManyToManyField(Tag, verbose_name='タグ', blank=True)
writer = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT, verbose_name='投稿者')
created_at = models.DateTimeField('作成日', auto_now_add=True)
updated_at = models.DateTimeField('更新日', auto_now=True)
def __str__(self):
return self.title
単に下記部分の32を書き換えればいいのかな
title = models.CharField('タイトル', max_length=32)
32となっているけど、今そんなか?もっと少ない気がするが、、
まず全角数字で確認してみる
確かに32だった
32文字って以外と短いのね
半角数字の場合はどうか→32だった
英語の場合はどうか→32だった
全角半角関係ないんだね。
とりあえず100にしてみる。
まずはローカルで起動してみる。
画像が表示されておらず、管理画面のCSSも効いていない
とりあえずタイトルの文字制限が100文字になっているか確認。
なってる!OK!
ここからは本題と違うが、ローカルでCSSと画像(つまり静的ファイル)が効いていない問題を解決する
そういえばmodels.pyを変更したら下記をしなきゃじゃね?と思い出し実行。
①「マイグレーションファイル」を作成する
py manage.py makemigrations {アプリ名}
※このコマンドにより、そのアプリディレクトリ内のmodels.pyの内容を元に、
「(アプリ名)/migrations」フォルダ内に「0001_initial.py」などの「マイグレーションファイル」が作られる。
※「マイグレーションファイル」とは、データベースにSQL文を送るための前段階のファイル。
②DBテーブルへSQLを送る
py manage.py migrate
※このコマンドにより、事前に作成したマイグレーションファイルをもとに、
DjangoはDBに実際のSQLを発行し、テーブルを作成する。
実際①②をやったら下記のようになった
(.MyBlogEnv) PS C:\Dev\DjangoMyBlog> py manage.py makemigrations blog
Migrations for 'blog':
blog\migrations\0001_initial.py
- Create model Category
- Create model Tag
- Create model Post
- Create model Comment
(.MyBlogEnv) PS C:\Dev\DjangoMyBlog> py manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, blog, contenttypes, sessions
Running migrations:
No migrations to apply.
(.MyBlogEnv) PS C:\Dev\DjangoMyBlog>
あれ、意味なかったか?
CSSも効いてない。
CSSが効いていない理由を調べる
AWS側での静的ファイル配信の設定をした時に色々いじったのが問題と予測。
【3日目】ブログのロゴ付け【毎日改善チャレンジ】
で下記を追加していた
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static")
]
が、
【その10】静的ファイル配信【初めてのAWSデプロイ編】
でその部分を削除していた。
STATICFILES_DIRSってなんだっけ?
どうやらあまり重要ではなく、プラスアルファの感じかな?
さて、なぜ見れないのか。
下記サイトがすごく丁寧に静的ファイルの扱いを基礎から解説してくれている。
https://daeudaeu.com/django-staticfile/
教科書も再度見返してみる。
すると、appディレクトリ内のurls.pyとconfig内のurls.pyで混同しているのではないかと気づいた
と、思ったら勘違いだった
上記の記事を再度よく読む
すると下のほうに下記の記述
を設定した場合、静的ファイルのリクエストを受け取った場合でも、
Django の開発用ウェブサーバーソフトは検索先フォルダからの静的ファイルの取得を行わなくなってしまいます。
つまり、Debug = False を設定すると静的ファイルのリクエストに対するレスポンスが毎回 Not Found になります。」
はっ!と思い、ローカルの.envを確認
Debug = False になっとーーーるーーーー!!
そういえばGoogleアナリティクスを導入した時にTrueからFalseに変えて、そのままになってたわ、、
何か試したらちゃんと元に戻すのが大事ね。
ということで解決!