ちょうどdjangoをチェックしていて、id
を引数としてURL books/urls.py
に渡して書籍のリストを表示しようとしていました。しかし404ページが見つかりませんでした。私は、ブラウザでこのURLを入力したとき、私は、URLでいただきました間違っ届かない:Djangoでpath()を使用して404が見つかりません
http://192.168.0.106:8000/books/list/21/
書店/ urls.py
urlpatterns = [
path('admin/', admin.site.urls),
path('books/', include("books.urls"))
]
settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'books'
]
...
...
...
ROOT_URLCONF = 'bookstore.urls'
書籍/ urls.py
urlpatterns = [
path('home/', create),
path('list/(?P<id>\d+)', list_view),
]
冊/ views.py
def create(request):
form = CreateForm(request.POST or None, request.FILES or None)
if form.is_valid():
instance = form.save(commit=False)
instance.save()
messages.success(request, "Book Created")
return redirect('/books/list', kwargs={"id":instance.id})
return render(request, "home.html", {"form":form})
def list_view(request, id=None):
books = Book.objects.filter(id=id)
return render(request, "list.html", {"books": books})
EDIT - ここ
├── books
│ ├── admin.py
│ ├── forms.py
│ ├── __init__.py
│ ├── models.py
│ ├── urls.py
│ └── views.py
├── bookstore
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
はスクリーンショットであるコメントで取り上げたよう - 試してみました付加することにより/
books.urls
のURL表現が、運:(
'books = Book.objects.filter(id = id)'を使うのはやや奇妙です。 'id'が本のidならば、' book = Book.objects.get(id = id) '、あるいは' book = get_object_or_404(Book、id = id) 'を見ると期待します。 – Alasdair
@Alasdair - 実際には 'book_id'だったので重複していたので、テストの一環として' id'に置き換えました。 – Laxmikant
また、あなたの 'redirect'行は、間違ってハードコードされたURLとkwargsを混ぜています。あなたは 'return redirect( '/ books/list /%s /'%instance.id)'でURLを構築するか、DjangoにURLを '' return redirect( 'list_view'、kwargs = {id:instance.id}) '。 – Alasdair