china_mの日記

ブログ初心者です。一応エンジニアをしています。

Djangoを勉強したのでアプリを作成してみることにした

Djangoを勉強して、Web上でアプリを起動することに成功したので、趣味がてらアプリを作成してみようと思いました。

以下のサイトを参考にSNSアプリ的なものを作っていきます。

https://note.com/saito_pythonista/n/n6550f5c2a07b

note.com

基本的に上記のサイト通りにいくと作成できると思いますが、自分が調べたところ、一瞬詰まったところをメモがてら残していきます。

   :VSCodeでフォルダを開くしたところ

  • django-allauth ライブラリについて

ログイン、ログアウト、ユーザ登録(管理)、パスワード設定など、ユーザー認証に必要な機能が備わっている。

ただし使用する場合、規定のURLパターンで各機能がルーティングされているので注意

https://note.com/shingo_takagi/n/nf024f6865897

note.com

  > pip install django-allauth

  • models.CharField 文字列が入る
  • models.TextField 文章が入る
  • models.ForeignKey(外部キー) 一対多のリレーションになる。

  Userでヒットしたものが数件出力される的な...

  参照しているオブジェクトが削除されたら一緒にオブジェクトを削除する

  例:ブログの記事を消したらコメントも消す

  • models.DateTimeField 日時が入る
  • from django.urls import reverse_lazy

  役割:ページ内からURLを取得するためのメソッド

  reverse との使い分け:クラスベースビュー内の変数には「reverse_lazy」を使う

  • get_success_url(self, **kwargs)

  引数に2個アスタリスクをつけると、呼び出し時に複数のキーワード引数を辞書と

  して受け取ることが出来る。

  アスタリスクがついていれば名前はさほど重要ではない。

  • ManyToManyField 多対多

  サッカー選手とポジションを例として考えると

   ・選手は複数のポジションが出来る

   ・ 同じポジションの選手は複数存在

  • super().get(request, *args, **kwargs)

  super()を使ってクラスのメソッドを呼び出す

  class LikeHome(LikeBase):  # LikeBaseを継承

  super(【今のクラス】, self).【呼び出すメソッド】

uxmilk.jp

  • connection.0.following.all

  0の部分はインデックス番号

  viewにてget_or_create メソッドを使用しているので、インデックス番号を指定する

  必要あり

  view → connection[0]  template → connection.0

  .like-btn → いいねを押す前のボタン

  .add-color → いいねが点灯する色

  • Bootstrapとは(navbarの使い方)

  WEBサイトやWEBページを効率よく開発するためのWEBフレームワーク

  • 一通りコードを打ち終わったところで、動かしてみたときに発生したエラー

  snsapp.Post: (models.E015) 'ordering' refers to the nonexistent field 'created_at'.

  エラー分のmodels.E015と'ordering'、'created_at'から snsapp>mofrls.py の Meta

  部分を表していると推測

  ordering 属性はオブジェクトのデフォルトの並び方を変更するときに使う。

  ハイフンをつけると降順になる(つけなければ昇順)

  よく見たら、タイポしていた...。

  create_at = models.DateTimeField(auto_now_add = True)

  ・・・

  class Meta:

    ordering = ["-created_at"]

  • URLは出たけど、OperationalError が出た

  → python manage.py makemigrations(db.sqlite3を削除した場合)
  → python manage.py migrate