質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

VPS

VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。

Q&A

0回答

826閲覧

【Python/Django】VPSデプロイ時のNoReverseMatchエラーについて

rrreee

総合スコア0

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

VPS

VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。

0グッド

0クリップ

投稿2021/06/11 14:53

編集2021/06/11 15:06

前提・実現したいこと

DjangoでWebページを作成している初学者です。
作成したプロジェクトをVPS上にデプロイしたところ、NoReverseMatchのエラーが発生します。
ローカル環境ではエラーが出ることなく正常に動作しており、何が問題なのかわからず困っています。
恐れ入りますが、何かご存じでしたらご教示いただきたいです。

発生している問題・エラーメッセージ

イメージ説明
イメージ説明

該当のソースコード

# layout.html {% load static %} {% load videos %} <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>動画アップロード</title> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.5/css/bulma.min.css"> <link rel="stylesheet" href="{% static 'videos/style.css' %}"> <script defer src="https://use.fontawesome.com/releases/v5.3.1/js/all.js"></script> <link rel="stylesheet" href="{% static 'jquery-3.3.1.slim.min.js' %}"> <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <script src="./js/script.js"></script> </head> <body> <header> <nav class="navbar is-dark" role="navigation" aria-label="main navigation"> <div class="navbar-brand"> <h2 class="navbar-item">video_list</h2> <div class="buttons"> <ul class="nav_list"> <li><a href="{% url 'videos:video_list' %}" class="button is-dark">ホーム</a></li> {% if user.is_authenticated %} <li><a href="{% url 'videos:video_create' %}" class="button is-dark">動画投稿</a></li> <li><a href="{% url 'videos:video_ranking' %}" class="button is-dark">ランキング</a></li> <li><a href="{% url 'videos:search' %}" class="button is-dark">検索</a></li> <li><a href="{% url 'videos:user_detail' user.id %}" class="button is-dark">{{ user }}</a> </li> <li><a href="{% url 'logout' %}" class="button is-dark">Logout</a></li> {% else %} <li><a href="{% url 'login' %}" class="button dark">Login</a></li> <li><a href="{% url 'accounts:signup' %}" class="button dark">SignUp</a></li> {% endif %} </ul> </div> </div> </nav> <div class="nav-wrapper"><!-- ②ナビゲーションメニュー --> <nav class="header-nav"> <ul class="nav-list"> <li class="nav-item"><a href="{% url 'videos:video_list' %}">ホーム</a></li> {% if user.is_authenticated %} <li class="nav-item"><a href="{% url 'videos:video_create' %}">動画投稿</a></li> <li class="nav-item"><a href="{% url 'videos:video_ranking' %}">ランキング</a></li> <li class="nav-item"><a href="{% url 'videos:search' %}">検索</a></li> <li class="nav-item"><a href="{% url 'videos:user_detail' user.id %}">{{ user }}</a> </li> <li class="nav-item"><a href="{% url 'logout' %}">Logout</a></li> {% else %} <li class="nav-item"><a href="{% url 'login' %}">Login</a></li> <li class="nav-item"><a href="{% url 'accounts:signup' %}">SignUp</a></li> {% endif %} </ul> </nav> </div> <div class="burger-btn"><!-- ③ハンバーガーボタン --> <span class="bar bar_top"></span> <span class="bar bar_mid"></span> <span class="bar bar_bottom"></span> </div> </header> <div class="section"> <div class="container"> <div class="maierea"> <aside class="aside"> {% if user.is_authenticated %} {% create_search_form request %} {% create_category_list %} {% endif %} </aside> <main> <div class="main"> {% block content %} {% endblock %} </div> </main> </div> </div> </div> </body> </html> <script> $('.burger-btn').on('click',function(){ $('.burger-btn').toggleClass('close'); $('.nav-wrapper').fadeToggle(500); }); </script>
# urls.py from django.urls import path from . views import (VideoList, VideoCreate, VideoUpdate, VideoDelete, VideoDetail, CommentCreate, VideoCategoryList, CommentCreate, VideoCategoryList, UserDetail, Ranking, Search) from .views import goodfunc, badfunc app_name = 'videos' urlpatterns = [ path('', VideoList.as_view(), name='video_list'), path('create/', VideoCreate.as_view(), name='video_create'), path('update/<int:pk>', VideoUpdate.as_view(), name='video_update'), path('delete/<int:pk>', VideoDelete.as_view(), name='video_delete'), path('play/<int:pk>', VideoDetail.as_view(), name='video_detail'), path('comment/<int:pk>', CommentCreate.as_view(), name='comment_create'), path('category/<int:pk>', VideoCategoryList.as_view(), name='video_category_list'), path('user/<int:pk>', UserDetail.as_view(), name='user_detail'), path('video_ranking/', Ranking.as_view(), name='video_ranking'), path('search/', Search.as_view(), name='search'), path('good/<int:pk>',goodfunc, name='good'), path('bad/<int:pk>', badfunc, name='bad'), ]
# views.py from django.shortcuts import get_object_or_404, redirect, render from django.views import generic from django.views.generic.base import TemplateView from .models import Video, Comment,Category from django.urls import reverse_lazy from django.db.models import Q from .forms import CommentCreateForm, VideoSearchForm from django.contrib.auth.mixins import LoginRequiredMixin from django.core.exceptions import PermissionDenied from django.contrib.auth.models import User from django.views.generic import ListView ~~一部省略~~ class Ranking(LoginRequiredMixin, generic.ListView): model = Video template_name = 'videos/user_detail.html' paginate_by = 9 ordering = '-good' class Search(LoginRequiredMixin, generic.TemplateView): template_name = 'videos/search.html' def get_queryset(self): queryset = super().get_queryset() form = VideoSearchForm(self.request.GET or None) if form.is_valid(): key_word = form.cleaned_data.get('key_word') if key_word: queryset = queryset.filter(Q(title__icontains=key_word) | Q(title__icontains=key_word)) return queryset def goodfunc(request,pk): object = Video.objects.get(pk=pk) username = request.user.get_username() if object.good == None: object.good = 0 if object.goodtext == None: object.goodtext = 'a' if username in object.goodtext: return redirect('videos:video_detail', pk=pk) else: object.good = object.good + 1 object.goodtext = object.goodtext + ' ' + username object.save() return redirect('videos:video_detail', pk=pk) def badfunc(request,pk): object = Video.objects.get(pk=pk) username = request.user.get_username() if object.bad == None: object.bad = 0 if object.badtext == None: object.badtext = 'a' if username in object.badtext: return redirect('videos:video_detail', pk=pk) else: object.bad = object.bad + 1 object.badtext = object.badtext + ' ' + username object.save() return redirect('videos:video_detail', pk=pk)
# ranking.html {% extends 'layout.html' %} {% load static %} {% load videos %} {% block content %} <div class="video_list grid"> {% for video in video_list %} <div class="video"> <h1>{{ forloop.counter }}位</h1> <a href="{% url 'videos:video_detail' video.pk %}"> {% if video.thumbnail %} <img src="{{ video.thumbnail.url }}"> {% else %} <img src="{% static 'videos/noimage.png' %}"> {% endif %} <h2>{{ video.title }}</h2> </a> </div> {% endfor %} </div> <div class="num"> <!-- 前の部分 --> {% if page_obj.has_previous %} <a href="?{% url_replace request 'page' page_obj.previous_page_number %}">前へ</a> {% endif %} <!-- 数字の部分 --> {% for num in page_obj.paginator.page_range %} {% if page_obj.number == num %} <span>{{ num }}</span> {% else %} <a href="?{% url_replace request 'page' num %}">{{ num }}</a> {% endif %} {% endfor %} <!-- 次への部分 --> {% if page_obj.has_next %} <a href="?{% url_replace request 'page' page_obj.next_page_number %}">次へ</a> {% endif %} </div> <div class="back_btn"> <a href='JavaScript:history.back()' class="button is-light">戻る</a> </div> {% endblock %}

試したこと

ネット上で同じNoReverseMatchのエラーに関する内容のものを一通り試したのですが、いずれも解決には至りませんでした。

補足情報(FW/ツールのバージョンなど)

Python3
Django
PostgreSQL
Nginx
gunicorn
さくらVPS

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問