###実現したいこと
記事投稿型Webアプリを開発中に発生した下記エラーを解決したいです。
各種コードを記入したところ、かなりボリュームが出てしまいましたが、ご確認いただけますと幸いです。
###エラー内容
不足等ありましたらお手数ですがご連絡いただけますと幸いです。
NoReverseMatch at / Reverse for 'bazaar' not found. 'bazaar' is not a valid view function or pattern name. Request Method: GET Error during template rendering In template /(ユーザー名)/Documents/Github/disney_side_stories/app/templates/app/base.html, error at line 0 <!--トラックバック(該当部分)--> /(ユーザー名)/Documents/Github/disney_side_stories/app/views.py in get return render(request, 'app/index.html', { …
###コード
view.py
Python
1class IndexView(View): 2 def get(self, request, *args, **kwargs): 3 post_data = Post.objects.filter(public=True).order_by("-id") 4 area = self.kwargs.get('area') 5 category = self.kwargs.get('category') 6 attraction = self.kwargs.get('attraction') 7 post_data = self.category_select(post_data, category, area, attraction) 8 post_data = self.area_select(post_data, category, area, attraction) 9 post_data = self.attraction_select(post_data, category, area, attraction) 10 11 page_obj = self.paginate_queryset(request, post_data, 10) 12 13 for post in post_data: 14 print(type(post.category)) 15 16 return render(request, 'app/index.html', { 17 'post_data': page_obj.object_list, 18 'page_obj': page_obj, 19 'area': area, 20 'attraction': attraction, 21 'category': category, 22 }) 23
index.html
投稿記事には3つのカテゴリ(area、attraction、category)があり、トップ画面に散りばめられたリンクをクリックして投稿記事を絞り込む機能としています。
html
1<header class="masthead"> 2 <div class="container h-auto my-4"> 3 <div class="row h-auto align-items-center"> 4 <div class="col-12 text-center TDL-table"> 5 {% if area == 'bazaar' %} 6 <img src="{% static 'img/WorldBazaar.png' %}" alt="" class="top-pic-bazaar"> 7 {% if category == 'story' %} 8 <a href="{% url 'index' 'bazaar' 'attraction1' 'story' %}">アトラクション1</a> 9 <!--詳細省略(以下、類似コードでも同様に詳細省略)--> 10 {% else %} 11 <a href="{% url 'index' 'bazaar' 'attraction1' 'all' %}">アトラクション1</a> 12 {% endif %} 13 {% elif area == 'adventure' %} 14 <img src="{% static 'img/AdventureLand.png' %}" alt=""> 15 {% if category == 'story' %} 16 <a href="{% url 'index' 'attraction2' 'attraction2' 'story' %}" class="riverline-link">アトラクション2</a> 17 {% else %} 18 <a href="{% url 'index' 'adventure' 'attraction2' 'all' %}" class="riverline-link">アトラクション2</a> 19 {% endif %} 20 {% elif area == 'western' %} 21 <img src="{% static 'img/WesternLand.png' %}" alt=""> 22 {% if category == 'story' %} 23 <a href="{% url 'index' 'western' 'attraction3' 'story' %}">アトラクション3</a> 24 {% else %} 25 <a href="{% url 'index' 'western' 'attraction3' 'all' %}">アトラション3</a> 26 {% endif %} 27 {% elif area == 'critter' %} 28 <img src="{% static 'img/CritterCountry.png' %}" alt=""> 29 {% if category == 'story' %} 30 <a href="{% url 'index' 'critter' 'attraction4' 'story' %}">アトラクション4</a> 31 {% else %} 32 <a href="{% url 'index' 'critter' 'attraction4' 'all' %}" >アトラクション4</a> 33 {% endif %} 34 {% elif area == 'fantasy' %} 35 <img src="{% static 'img/fantasy_top.png' %}" alt=""> 36 {% if category == 'story' %} 37 <a href="{% url 'index' 'fantasy' 'attraction5' 'story' %}">アトラクション5</a> 38 {% else %} 39 <a href="{% url 'index' 'fantasy' 'attraction5' 'all' %}" >アトラクション5</a> 40 {% endif %} 41 {% elif area == 'toon' %} 42 <img src="{% static 'img/ToonTown.png' %}" alt="" class="top-pic-toon"> 43 {% if category == 'story' %} 44 <a href="{% url 'index' 'toon' 'attraction6' 'story' %}">アトラクション6</a> 45 {% else %} 46 <a href="{% url 'index' 'toon' 'attraction6' 'all' %}">アトラクション6</a> 47 {% endif %} 48 {% elif area == 'tomorrow' %} 49 <img src="{% static 'img/TomorrowLand.png' %}" alt="" class="top-pic-toon"> 50 {% if category == 'story' %} 51 <a href="{% url 'index' 'tomorrow' 'attraction7' 'story' %}">アトラクション7</a> 52 {% else %} 53 <a href="{% url 'index' 'tomorrow' 'attraction7' 'all' %}">アトラクション7</a> 54 {% endif %} 55 {% else %} 56 <img src="{% static 'img/TDL_top.png' %}" class="top-pic" alt=""> 57 {% if category == 'story' %} 58 <a href="{% url 'index' 'bazaar' 'story' %}" class="bazaar-link">ワールドバザール</a> 59 <a href="{% url 'index' 'adventure' 'story' %}" class="adventure-link">アドベンチャーランド</a> 60 <a href="{% url 'index' 'western' 'story' %}" class="western-link">ウエスタンランド</a> 61 <a href="{% url 'index' 'critter' 'story' %}" class="critter-link">クリッターカントリー</a> 62 <a href="{% url 'index' 'fantasy' 'story' %}" class="fantasy-link">ファンタジーランド</a> 63 <a href="{% url 'index' 'toon' 'story' %}" class="toon-link">トゥーンタウン</a> 64 <a href="{% url 'index' 'tomorrow' 'story' %}" class="tomorrow-link">トゥモローランド</a> 65 {% elif category == 'mickey' %} 66 <!--上記'story'を'mickey'に変えたコード--> 67 {% elif category == 'trivia' %} 68 <!--上記'story'を'trivia'に変えたコード--> 69 {% elif category == 'other' %} 70 <!--上記'story'を'other'に変えたコード--> 71 {% elif category == 'all' %} 72 <!--上記'story'を'all'に変えたコード--> 73 {% else %} 74 <a href="{% url 'bazaar' 'index' %}">ワールドバザール</a> 75 <a href="{% url 'adventure' 'index' %}">アドベンチャーランド</a> 76 <a href="{% url 'western' 'index' %}">ウエスタンランド</a> 77 <a href="{% url 'critter' 'index' %}">クリッターカントリー</a> 78 <a href="{% url 'fantasy' 'index' %}">ファンタジーランド</a> 79 <a href="{% url 'toon' 'index' %}">トゥーンタウン</a> 80 <a href="{% url 'tomorrow' 'index' %}">トゥモローランド</a> 81 {% endif %} 82 {% endif %} 83 </div> 84 </div> 85 </div> 86</header>
urls.py
Python
1urlpatterns = [ 2 path('', views.IndexView.as_view(), name='index'), 3 path('area/<str:area>/', views.IndexView.as_view(), name='index'), 4 path('area/<str:area>/<str:category>/', views.IndexView.as_view(), name='index'), 5views.IndexView.as_view(), name='index'), 6 path('area/<str:area>/<str:attraction>/<str:category>/', views.IndexView.as_view(), name='index'), 7 path('category/<str:category>/', views.CategoryNameView.as_view(), name='category_name'), 8]
###試したこと
index.htmlのリンク(<a href="{% url 'index' 'area' 'attraction' 'category' %}"></a>)のattractionとcategoryの順番を最初入れ替えていたのですが、その時はNoReverseMatchエラーが出ませんでした。
一度最初の順番に直したところ、やはりエラーが出ないので、タイプミスではないと考えます。
ただ、諸事情によりどうしても現在の'attraction' 'category'の順にしたく、アドバイスいただけますと幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。