前提・実現したいこと
プログラミング初心者です。Djangoで麻雀のスコア計算機能の付いたスコア表を作成して、ネットに公開しようといます。
localhostでのサイト作成が終了し、ついに公開しようとvultrでサーバを借りてDBの設定をして、
gunicorn --bind 0.0.0.0:8000 mahjongproject.wsgi
で借りたipアドレスを入れ、正常に動作するか試してみました。すると、loclahostでは正常に動作していたところでエラーが出てしまったので、本番環境とで何が違っているのかわかりませんでした。top画面には入れているのでcollectstaticはできていると思います。
発生している問題・エラーメッセージ
サイトにloginした人は麻雀のプレイヤー登録をします。
topページのurlからプレイヤー登録画面へ行くことはできました。そこでプレイヤー名を入力し、登録ボタンを押すと
MahjongPlayerModelに、入力した情報が保存されるはずなのですが、以下のようなエラー画表示が出てしまいました。
(models.pyの内容は下に載せてあります。)
Environment: Request Method: POST Request URL: http://000.000.000.000:8000/manimahjongrecord/player_create/ Django Version: 3.0.9 Python Version: 3.8.2 Installed Applications: ['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'mahjongrecord'] Installed Middleware: ['django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware'] Traceback (most recent call last): File "/home/mahjongproject/mahjongenv/lib/python3.8/site-packages/django/db/backends/utils.py", line 86, in _execute return self.cursor.execute(sql, params) The above exception (column mahjongrecord_mahjongplayermodel.username does not exist LINE 1: ...ETE FROM "mahjongrecord_mahjongplayermodel" WHERE "mahjongre... ^ ) was the direct cause of the following exception: File "/home/mahjongproject/mahjongenv/lib/python3.8/site-packages/django/core/handlers/exception.py", line 34, in inner response = get_response(request) File "/home/mahjongproject/mahjongenv/lib/python3.8/site-packages/django/core/handlers/base.py", line 115, in _get_response response = self.process_exception_by_middleware(e, request) File "/home/mahjongproject/mahjongenv/lib/python3.8/site-packages/django/core/handlers/base.py", line 113, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/home/mahjongproject/mahjongenv/lib/python3.8/site-packages/django/contrib/auth/decorators.py", line 21, in _wrapped_view return view_func(request, *args, **kwargs) File "/home/mahjongproject/mahjongrecord/views.py", line 65, in player_create_func MahjongPlayerModel.objects.filter(username = request.user.username).delete() File "/home/mahjongproject/mahjongenv/lib/python3.8/site-packages/django/db/models/query.py", line 722, in delete deleted, _rows_count = collector.delete() File "/home/mahjongproject/mahjongenv/lib/python3.8/site-packages/django/db/models/deletion.py", line 314, in delete count = qs._raw_delete(using=self.using) File "/home/mahjongproject/mahjongenv/lib/python3.8/site-packages/django/db/models/query.py", line 736, in _raw_delete return sql.DeleteQuery(self.model).delete_qs(self, using) File "/home/mahjongproject/mahjongenv/lib/python3.8/site-packages/django/db/models/sql/subqueries.py", line 75, in delete_qs cursor = self.get_compiler(using).execute_sql(CURSOR) File "/home/mahjongproject/mahjongenv/lib/python3.8/site-packages/django/db/models/sql/compiler.py", line 1152, in execute_sql cursor.execute(sql, params) File "/home/mahjongproject/mahjongenv/lib/python3.8/site-packages/django/db/backends/utils.py", line 100, in execute return super().execute(sql, params) File "/home/mahjongproject/mahjongenv/lib/python3.8/site-packages/django/db/backends/utils.py", line 68, in execute return self._execute_with_wrappers(sql, params, many=False, executor=self._execute) File "/home/mahjongproject/mahjongenv/lib/python3.8/site-packages/django/db/backends/utils.py", line 77, in _execute_with_wrappers return executor(sql, params, many, context) File "/home/mahjongproject/mahjongenv/lib/python3.8/site-packages/django/db/backends/utils.py", line 86, in _execute return self.cursor.execute(sql, params) File "/home/mahjongproject/mahjongenv/lib/python3.8/site-packages/django/db/utils.py", line 90, in __exit__ raise dj_exc_value.with_traceback(traceback) from exc_value File "/home/mahjongproject/mahjongenv/lib/python3.8/site-packages/django/db/backends/utils.py", line 86, in _execute return self.cursor.execute(sql, params) Exception Type: ProgrammingError at /manimahjongrecord/player_create/ Exception Value: column mahjongrecord_mahjongplayermodel.username does not exist LINE 1: ...ETE FROM "mahjongrecord_mahjongplayermodel" WHERE "mahjongre... ^
該当のソースコード
#####models.py
python
1class MahjongPlayerModel(models.Model): 2 username = models.CharField(max_length = 100, default = 'taro') 3 player1 = models.CharField(max_length = 100, default = 'player1') 4 player2 = models.CharField(max_length = 100, default = 'player2') 5 player3 = models.CharField(max_length = 100, default = 'player3') 6 player4 = models.CharField(max_length = 100, default = 'player4')
#####wiews.py
既に登録してあるプレイヤーを削除してから新たに登録して、save()しなおす仕組みなのですが、自分はここの2つの仕組みのどちらかに欠陥があるのではないかと思っています。しかしlocalhostで試したときはうまくいきました。
MahjongPlayerModel.objects.filter(username = request.user.username).delete()
username = request.user.username
@login_required def player_create_func(request): if request.method == 'POST': player1 = request.POST['player1'] player2 = request.POST['player2'] player3 = request.POST['player3'] player4 = request.POST['player4'] MahjongPlayerModel.objects.filter(username = request.user.username).delete() players = MahjongPlayerModel(username = request.user.username, player1 = player1, player2 = player2, player3 = player3, player4 = player4) players.save() return redirect('top') return render(request, 'playercreate.html')
なのでcollectstaticが正常にできていない可能性もあるのですが、その場合なぜできていないかはわかりませんでした。
#####settings.py
STATIC_URL = '/sta/' #STATICFILES_DIRS = [ # os.path.join(BASE_DIR, 'static/') #] STATIC_ROOT = os.path.join(BASE_DIR, 'static/') LOGIN_URL = 'login'
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。