【Django】登録したdbをブラウザに表示する

こちらの記事を参考にしました。

itc.tokyo

データベースを表示したいページに関する関数(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を設定し、ログインできるようにしてみます。

設定にはこちらのサイトを参考にするとよいと思います。

www.sejuku.net

まず、

python manage.py createsuperuser と打ち込み、Username, Email address, Passwordを順に設定していきます。 この時、UsernameとPasswordは必須項目なので、打ち込みましょう。Email addressは任意です。 その後、再度ブラウザを更新すると、adminサイトにログインできます。

 

※追記

おそらく以上の方法でadminサイトへのログインまではできると思いますが、データベースの登録はできないと思います。

そのため、以下を参考にして、python manage.py makemigrationspython manage.py migrateと再度打ち込んでみてください。

zenn.dev

Vue.createApp is not a function となったときの対処法

少しハマったので、忘れないように解決策を書いておく。

 

結論から言うと、cdnに使用しているリンクの中に、createApp関数が入っていないため、定義されていないというエラーが生じてしまっている。

そのため、

stackoverflow.com

 

こちらに示してあるように、以下のリンクを読み込む必要がある。

要らないものまで読み込んでしまうので、全て読み込む必要はないが、

 





をvueのcdnの下に書き加えるとエラーが解消された。

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 pullgit fetchgit mergeなどリモートリポジトリへの操作全てが行えない模様だった。 この原因はよくあるが、git cloneをしてきたときにブランチがなぜかmainになっていることだった。 そのため、git checkout -b masterでブランチ移動をしてからgit push origin masterとすると無事プッシュできた。

Dockerのコンテナ内でDjangoの開発サーバを起動し、ホスト側からアクセスする

Dockerを使用し、Djangoを用いたアプリ開発を行っている際にハマった点があったので、対処法を忘れないように示す。

 

以下サイトを参考にした。

peblo.gs

qiita.com

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を使う

主にこちらのサイトを参考にしていけば大丈夫です.

zenn.dev

ところどころ選択項目の数が違う場合がありましたが,あまり気にせず進めていれば大丈夫です.

 

私は自宅と研究室の二つのパソコンで実施したのですが,片方のパソコンで以下のエラーが発生してしまいました.

[18052] Failed to execute script docker-compose

このエラーは私の場合,Docker Desktopが起動していなかったからです.

一度Docker Desktopを立ち上げてみると,画面には「Starting...」や「Stopped...」などが書いてありました.

そんな時は,左下にあるクジラのマークをクリックしてみると解決ができます.

Docker Desktopのインストールはできているものの,初期設定を行えていなかったようです.