Spring Bootでアプリを制作したときに出たエラー①
Spring Bootで民宿予約アプリを作ろう | プログラミング学習サイト【侍テラコヤ】 (sejuku.net)
↑上記のサイトでアプリを制作していた時に出たエラーを自主学習用にまとめます。
コピペすれば一瞬で解決できるかと思うのですが、自分の学習のため、一言一句手打ちで進めています。
7章 管理者用の民宿一覧ページを作成しよう
で、最終的な画面がこのようになるはずですが、
作成しているアプリを実行したところ、以下のエラーが出ました。
<エラー解決法>
House.java(エンティティクラス)の中で
import java.sql.Timestamp → import java.security.Timestamp
sqlを呼び出せていなかった様ですね・・・
private String postalCode → private String postal_code
呼び出すカラム名が間違っていたら呼び出せませんよね・・・
Djangoアプリを作成時、環境作成でエラーにはまった話
仮想環境の作成、中に入れた!
- djangoなど必要なパッケージもインストールできた!
- プロジェクトを作成していくぞー!
の時に発生したエラーです。
> django-admin startproject config
Fatal error in launcher: Unable to create process using '"c:\program files (x86)\python 3.7.3\python.exe" "C:\Program Files (x86)\Python 3.7.3\Scripts\django-
admin.exe" startproject config'
Goggle翻訳で直訳すると
「ランチャーの致命的なエラー:'"Program files(X86)のpython 3.7.3 python.exe は
"Program Files(X86)Python 3.7.3 \Scripts\ django-admin.exe を使用してプロセスを
作成できません'」
> python -m django startproject config
ただし、バージョン等気を付けること。(pythonを2つ以上インストールしている
場合)
https://daeudaeu.com/python-django-admin/
自分用のメモとして残しています。
根本的な解決としては、環境変数の変更などが必要と思われます。
Djangoを勉強したのでアプリを作成してみることにした
Djangoを勉強して、Web上でアプリを起動することに成功したので、趣味がてらアプリを作成してみようと思いました。
以下のサイトを参考にSNSアプリ的なものを作っていきます。
https://note.com/saito_pythonista/n/n6550f5c2a07b
基本的に上記のサイト通りにいくと作成できると思いますが、自分が調べたところ、一瞬詰まったところをメモがてら残していきます。
:VSCodeでフォルダを開くしたところ
- django-allauth ライブラリについて
ログイン、ログアウト、ユーザ登録(管理)、パスワード設定など、ユーザー認証に必要な機能が備わっている。
ただし使用する場合、規定のURLパターンで各機能がルーティングされているので注意
https://note.com/shingo_takagi/n/nf024f6865897
> 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).【呼び出すメソッド】
- connection.0.following.all
0の部分はインデックス番号
viewにてget_or_create メソッドを使用しているので、インデックス番号を指定する
必要あり
view → connection[0] template → connection.0
- style.css
.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