Witam,
problem wydaje sie być banalny, jednak od wczoraj główkuję bezskutecznie nad jego rozwiązaniem.
Wygląda to tak:
chciałbym po dodaniu zdjęcia do bazy przekierować aplikację do widoku wyświetlajacego to zdjęcie.
url wygląda tak:
url(r'^photo_detail/(?P<id>[0-9])+/$', views.photo_detail, name='photo_detail')
widok dodający zdjęcie do bazy tak:
@csrf_exempt
def add_photo(request):
if request.method == 'POST':
form = AddPhoto(request.POST, request.FILES)
if form.is_valid():
form.save()
return redirect('photo_detail', id=form.id)
else:
return redirect('add_photo')
else:
form = AddPhoto()
return render(request, 'add_photo.html', {})
a widok mający wyświetlić zdjęcie - tak:
def photo_detail(request, id):
photo = get_object_or_404(Photo, id=id)
return render(request, 'photo_detail.html', {'photo': photo})
Problem polega na tym, że za każdym razem wyświetla się komunikat "Page not found (404)" mówiący o tym, że nie znaleziono egzemplarza obiektu o zadanym "id". Szkopuł jednak w tym, że egzemplarz o o "id" przekazywanym z widoku "add_photo" do "photo_detail" istnieje (co łatwo można sprawdzić ręcznie w konsoli), dodatkowo po wpisaniu "na sztywno" w widoku "photo_detail" parametru "id" strona wyświetla się poprawnie.
Przykładowy url z okna przeglądarki wygląda tak:
"http://127.0.0.1:8000/twelvemonths/photo_detail/71/". Wyświetla się "Page not found (404)", a zarazem obiekt w bazie o "id" 71 istnieje ;/