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

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

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

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

Python

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

Q&A

解決済

1回答

4726閲覧

Reverse for 〜 with arguments 〜 not found. 1 pattern(s) tried: [というエラーが出る

oika77

総合スコア184

Django

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

Python

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

0グッド

0クリップ

投稿2022/02/04 08:28

編集2022/02/04 08:40

django.urls.exceptions.NoReverseMatch: Reverse for 'book_index' with arguments '('b1',)' not found. 1 pattern(s) tried: ['book/(?P<pk>[0-9]+)/index\\Z']

ページのイメージとしてはbook_title.htmlで本のタイトル一覧が出てきて、クリックすると、その本の目次のページ(book_index.html)が出てくるといった感じです。


このようなエラーが出たので、urls.pyのBookIndexViewのpathと、views.pyのBookIndexViewクラスをコメントアウトしました。しかし、それでも同じエラーが出ています。

python

1#urls.py 2コード 3from django.urls import path 4from app import views 5 6urlpatterns = [ 7 path('',views.BookTitleView.as_view(), name = 'book_title'), 8 path('book/<int:pk>/index',views.BookIndexView.as_view(), name = 'book_index'), 9]

python

1#views.py 2コード 3from django import views 4from django.views.generic import View 5from django.shortcuts import render 6from .models import BookData, Miosie 7 8# Create your views here. 9class BookTitleView(View): 10 def get(self, request, *args, **kwargs): 11 book_data = BookData.objects.order_by('id') 12 return render(request, 'app/book_title.html',{ 13 'book_data': book_data 14 }) 15 16class BookIndexView(View): 17 def get(self, request, *args, **kwargs): 18 index_data = Ronbun.objects.order_by('id').filter(book_id = self.kwargs['book_id']) 19 return render(request, 'app/book_index.html',{ 20 'index_data': index_data 21 }) 22

html

1<!--book_title.html--> 2コード 3{% extends "app/base.html" %} 4{% block content %} 5 6{% for bookD in book_data %} 7<div class="book_title"> 8 <a href="{% url 'book_index' bookD.book_id%}">{{bookD.book_id}}</a> 9</div> 10{% endfor %} 11 12{% endblock %}

html

1<!--book_index.html--> 2コード 3{% extends "app/base.html" %} 4{% block content %} 5 6{% for indexD in index_data %} 7<div class="book_title"> 8 {{indexD.title}} 9</div> 10{% endfor %} 11 12{% endblock %} 13

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

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

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

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

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

guest

回答1

0

自己解決

このように、htmlのurlタグでの方で渡しているのが、「book_id」だったので、pathの方で受け取れるのが「book_id」だけなのに、int:pkを使おうとしてたので、怒られていたみたいです。
お騒がせいたしました。

html

1<!--book_title.html--> 2<a href="{% url 'book_index' bookD.book_id%}">{{bookD.book_id}}</a>

python

1path('book/<int:pk>/index',views.BookIndexView.as_view(), name = 'book_index'),

python

1path('book/<str:book_id>/index',views.BookIndexView.as_view(), name = 'book_index'),

投稿2022/02/04 08:58

oika77

総合スコア184

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問