【Django】登録したdbをブラウザに表示する
こちらの記事を参考にしました。
データベースを表示したいページに関する関数(view.pyで定義した部分)に行き、以下のように書き換えます。
from .models import Test
tests_list = {}
tests = Test.objects.all()
tests_list["tests_list"] = tests
return render(request, 'index.html', tests_list)
ここで、Test, tests, tests_list
等は、お好きなように変えていただいて構いません。但し、Testに関してはmodels.pyで定義した名前でなくてはいけません。 これをviews.pyに付け足し、index.html
(私の場合)に以下を書き込むと、登録したデータベース一覧を出力できます。
<div>
{% for test in tests_list %}
<ul>
<li>{{ test.que }}</li>
<li>{{ test.ans }}</li>
<li>総出題回数:{{ test.total }}</li>
<li>正解回数:{{ test.correct }}</li>
</ul>
{% endfor %}
</div>
ここで、test.○○
の部分はご自身で登録したデータベースの内容によって書くものが変化します。 ※私の場合
from django.db import models
# Create your models here.
class Test(models.Model):
## testのタイトル・解答
que = models.CharField(max_length=255)
ans = models.CharField(max_length=255)
## testの出題数
total = models.IntegerField(default=0)
## testの正解回数
correct = models.IntegerField(default=0)
※当たり前ですが、データベースに何も登録していないと出力はされません。
【Django】adminサイトの表示からsuperuserの設定まで
Djangoを使ってadminサイトを表示し、ログインしてからデータベースを確認するまでの流れを書きたいと思います。
まず、自分のアプリが表示されているところまで行きます。
だいたい
localhost:8000
その後、パスの最後に/admin/
と付け加えてもadminサイトが表示されない時はどのようにすればよいのでしょうか?
おそらくですが、そんな時は、python manage.py migrate
をし忘れているのだと思います。
なので、まずはmigrateコマンドを打ち込み再度ブラウザを更新するとadminサイトが表示されると思います。
次に、superuserを設定し、ログインできるようにしてみます。
設定にはこちらのサイトを参考にするとよいと思います。
まず、
python manage.py createsuperuser
と打ち込み、Username, Email address, Password
を順に設定していきます。 この時、UsernameとPasswordは必須項目なので、打ち込みましょう。Email addressは任意です。 その後、再度ブラウザを更新すると、adminサイトにログインできます。
※追記
おそらく以上の方法でadminサイトへのログインまではできると思いますが、データベースの登録はできないと思います。
そのため、以下を参考にして、python manage.py makemigrations
python manage.py migrate
と再度打ち込んでみてください。
Vue.createApp is not a function となったときの対処法
git pushでerror: failed to push some refs to 'github.com:takumi765/Django-Vue.js-Docker_sample.git'となる
少しハマった部分があったので備忘録として書いておく。
状況:Githubで新たにリポジトリを作成してgit clone
でローカルに落としてきた。ディレクトリやフォルダなどの作成を行ってからgit push
をしようとしたらerror: failed to push some refs to 'github.com:takumi765/Django-Vue.js-Docker_sample.git'
と怒られてしまった。
他にもgit pull
git fetch
git merge
などリモートリポジトリへの操作全てが行えない模様だった。 この原因はよくあるが、git clone
をしてきたときにブランチがなぜかmain
になっていることだった。 そのため、git checkout -b master
でブランチ移動をしてからgit push origin master
とすると無事プッシュできた。
Dockerのコンテナ内でDjangoの開発サーバを起動し、ホスト側からアクセスする
Dockerを使用し、Djangoを用いたアプリ開発を行っている際にハマった点があったので、対処法を忘れないように示す。
以下サイトを参考にした。
Dockerのコンテナ内にexecで入ったのちに
python manage.py runserver
をして、localhost:8000
にアクセスしても画面が表示されなかった。
これは、コンテナは完全に独立しているというDockerの性質の問題だと考えている。
そのため、まずはコンテナ内からホストマシンのlocalhostに接続する必要がある。
一つ目の記事で最終確認まで行う。
次は、参考記事のQiitaの方でも示してあるように、docker-compose.yml
の設定に以下の部分があるが、これはコンテナ内では、8000番ポートで起動させてOS側では50030番ポートでリッスンしているという意味である。
ports:
- "50030:8000"
そのため、ホスト側では、localhost50030
にアクセスすると上手く表示される。
Docker-composeでdbコンテナが立ち上がらない
以前紹介したこちらの記事では,データベースにpostgresというものを使用していました.
challenge-think.hatenablog.com
別のパソコンでGithubからpullしてきて
docker-compose up
をすると,webコンテナは立ち上がるのですが,
dbのコンテナに以下のようなエラーが出てしまい.立ち上がってすぐにシャットダウンされてしまうという問題が発生しました.
PostgreSQL Database directory appears to contain a database; Skipping initialization
FATAL: could not open directory "pg_notify": No such file or directory
LOG: database system is shut down
ドッカーについての知識が全くないため,原因を追及するところまではできませんでしたが,以下のように書き換えるとひとまずエラーは抜けることができます. データベースをsqliteに変更する方法です.
Dockerfile
FROM python:3.9.13
WORKDIR ***
COPY requirements.txt ./
RUN pip install --upgrade pip
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
docker-compose.yml
version: '3'
services:
webapp:
restart: always
build: .
volumes:
- .:***
command: python3 manage.py runserver 0.0.0.0:8888
ports:
- "80:8888"
settings.py
~~~~~~~~~~~~~~
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
~~~~~~~~~~~~~~
以下に書き換え,再度
docker-compose up
をしたのちにブラウザで http //127.0.0.1
にアクセスするととりあえずは動くようになります. このようなエラーを吐いた原因についてはもう少しDockerに関して勉強してからに使用と思います.
Windows10でDockerを使う
主にこちらのサイトを参考にしていけば大丈夫です.
ところどころ選択項目の数が違う場合がありましたが,あまり気にせず進めていれば大丈夫です.
私は自宅と研究室の二つのパソコンで実施したのですが,片方のパソコンで以下のエラーが発生してしまいました.
[18052] Failed to execute script docker-compose
このエラーは私の場合,Docker Desktopが起動していなかったからです.
一度Docker Desktopを立ち上げてみると,画面には「Starting...」や「Stopped...」などが書いてありました.
そんな時は,左下にあるクジラのマークをクリックしてみると解決ができます.
Docker Desktopのインストールはできているものの,初期設定を行えていなかったようです.