VRアートギャラリーを作る道のり

2021年の1月頃からVRアートギャラリーを作ろうと思い、色々と遠回りをしながら地道に活動を続けています。

現状考えているのは、以下のツールを使って誰でも作品をWeb上のアートギャラリーに展示できるようにしようというもの。

展示媒体:Webページ、Djangoで開発(≒Python)
3D空間の作り方:Blenderで作ったデータをBabylon.jsを使いWebGL化

最初はWordPressの一般的なホームページで実現しようと考えていましたが、参加するユーザー数が増えるとどうにも管理が難しそう。JavaScriptでWordPressに変更を加え無理くり作ってしまうのも試しましたが、どうにも安定して長期間動きそうにない。アップデートのたびに動作検証するのもめんどいですし、Babylon.jsのWordPressプラグインはまだアルファ版しかありません。

仕事の合間の時間でこんなことを色々とためしていたら早くも半年以上が経過してしまいました。

現在は、「動かして学ぶ!PYTON DJANGO開発入門」という書籍を参考にしながらベースとなるホームページを作っている所です。

この書籍で参考に作ったデータをベースにして、今後改良を加えていこうと思っています。しかしながら、2019年に出版された書籍の情報では既に古くなってしまっている所があり動かない部分がいくつかあります。どこなのか。

本番環境を作る際にどうせ自身が苦労することになるので、学習時点で判明した問題点を明確にし、その解決策を記録していくために書いてみることにしました。

世の中の99.9%以上の人には全く役に立たない備忘録です。

ベースとなる開発環境

Windows10 Pro(書籍環境: Windows10 Home)
Python:3.9.6(書籍環境:3.7.3)
Django:3.2.6(書籍環境:2.2.2)
PostgreSQL:13.4(書籍環境:10.10)

Chapter4 Webアプリの開発前の準備

05 PyCharmをインストールする
本書はエディタとしてPyCharmの使用を推奨しています。
私はもともと、Visual Studio Codeを使用していたので、PyCharmを使っていませんでした。私のような初学者の場合、書籍通りにPyCharmを使用しないと、Chapter9で出てくるsettings.pyを開発向け、運用向けで分ける際に手間となります。

PyCharm以外を使いたい場合は、コマンドプロンプトやシェルで設定を入れてあげる必要が出てきます。

記載例
set DJANGO_SETTINGS_MODULE=mysite.settings django-admin runserver

この設定を入れてあげた後に、通常通り、
python manage.py runserver

を入力すると指定したセッティングファイルを引用して開発用サーバーを稼働させることができます。たぶん。

06 PostgreSQLをインストールし、データベース環境を構築する

Djangoの標準のSQL(sqlite3)では後々の開発時に問題が出てくるため、PostgreSQLを使うようにしなさい。という情報に色々な場面で出会います。
sqlite3ではデータベースファイルが1つしか存在できないので、拡張していくと問題が出てくることが多いらしいです。

個人的にはPostgreSQLの設定で何回か心がくじけたので、将来同じような気持ちにならないよう、つまずいた点を記載しておきます。

PostgreSQLはスーパーユーザーで管理します。
パスワードはインストール時に入力することになるので覚えておく必要があります。スーパーユーザーのユーザー名はpostgresです。

DB_USER:postgres
DB_PASSWORD:インストール時に設定したパスワード

PostgreSQLの環境変数の設定

環境変数の設定を入れ終わったら、
コマンドプロンプトで
psql --version
と入力しバージョン情報が表示されたらパスが通っています。
と説明されますが、runserverコマンドで開発サーバーを動かしてもパスワードが無いとエラーが吐き出され、環境によっては稼働しません。

no password supplied error, unable to connect to postgres database
というエラーメッセージが表示されます。

パスが通ればpsql --versionでバージョン情報を表示できるようになる。
psqlのパスが通ていないせいでrunserver時の認証に失敗し、エラーメッセージが表示される。

パスが通っているのに、パスが通っていない。よく分からない状況です。
私のSurfaceはこのケースに該当しました。

ちなみに、ユーザーの環境変数は設定してすぐに反映されますが、
システムの環境変数は再起動後でないと反映されません。

Django用の設定の場合、システム環境変数を設定することになると思うので、うまくいかなかったは再起動してみてください。

PostgreSQLのシステム環境変数が通らない(パスが通らない)場合の対応策
プロジェクトフォルダに.envというファイルを作り、PostgreSQLのログイン情報を記入します。プロジェクトフォルダというのは
django-admin start project 'プロジェクト名'
で作成されるフォルダです。

urls.pyやsettings.pyが最初に作られるフォルダに.envファイルを作ります。ファイル名は「.env」だけで.の前には何も名称をつける必要はありません。

.envに記述する内容は以下の感じです。
DB_USER=postgres
DB_PASSWORD='Postgresのインストール時に設定したパスワード'

.envファイルを作ったら、次はdjangoが.envファイルを読み込めるようにsettings.pyに記述をしてあげます。

import os
from os.path import join, dirname
from dotenv import load_dotenv

のモジュールたちをインポートし、

#Path edit
load_dotenv(verbose=True)
dotenv_path=join(dirname(__file__),'.env')
load_dotenv(dotenv_path)

の記述もsettings.pyの中に追加してあげます。
dotenvが動かない人は、モジュールがパソコンにインストールできていないので、コマンドプロンプトからpipコマンドを利用してdotenvをパソコン上にインストールしてください。

Chapter7 トップページを作り込む

01 Bootstrapテンプレートをダウンロードする

Start BootstrapからOne Page Wonderのテンプレートを入手してホームページに利用する、という手順ですが、2021年8月時点と、書籍が発売された2019年時点では配布されるファイルの構成が変わっています。

書籍に記載のvendorというフォルダはありませんし、bootstrap.min.cssというファイルも存在しません。
テンプレートのcssファイルはstatic/css/style.cssを使えばいいです。
mystyle.cssは別途必要なので書籍通りに記載すれば動きます。
画像データも保存先が変わっているので、
static/assets/img/01.jpg~03.jpgを使用すれば問題なく動きます。

Chapter9 フォーム機能を作り上げるーメール送信

06 メール送信を確認する

Chapter9では、書籍の記載通りにメール送信機能を実装。問合せフォームに送信者名、メールアドレス、タイトル、メッセージを記載して送信ボタンを押す。そうするとメールの送信内容がrunserverの画面に表示される。

となっていますが、現段階の環境では、表示されません。

同様に、
07 画面にメッセージが表示されるようにする

も動きません。

どこに修正をかければいいかはまだ解決策が見えていないので、一旦ここは飛ばしてChapter10に進む。

こんな感じで今日は心がくじたけので一旦終了です。



この記事が気に入ったらサポートをしてみませんか?