방금 django를 확인한 결과 에 인수로 id
을 전달하여 책을 나열 할보기를 시도했습니다. 하지만 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'
books/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})
편집 - 여기
├── 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가'return redirect ('list_view', kwargs = {id : instance.id})'. – Alasdair