Django - идентификатор модели в подробном представлении URL, первый идентификатор не работает - PullRequest
0 голосов
/ 14 марта 2019

У меня есть модель Position, в которой я создал подробный вид для просмотра каждой отдельной позиции.

views.py

def position_detail_view(request, id=None):

    position = get_object_or_404(Position, id=id)

    context= {
        'object': position,
    }

    return render(request, 'positions/position_detail.html', context)

позиций / urls.py

from django.urls import path, include
from .views import position_list_view, position_detail_view

urlpatterns = [
    path('', position_list_view),
    path('<int:id>', position_detail_view, name='detail')
]

Когда я перехожу на http://localhost:8000/apply/1/,, где id = 1, я получаю сообщение об ошибке 404. Однако с любым другим идентификатором страница загружается просто отлично. Любые идеи о том, почему первый идентификатор в модели дает ошибку 404?

Редактировать 1: Ошибка трассировки

Страница не найдена (404) Метод запроса: GET Запрос URL: http://localhost:8000/apply/1/ Использование URLconf, определенного в bta_website.urls, Django попробовал эти шаблоны URL в следующем порядке:

admin / [name = 'home'] apply / application / apply / apply / [name = 'detail'] Текущий путь, apply / 1 /, не соответствует ни одному из них.

Вы видите эту ошибку, потому что в вашем Django есть DEBUG = True файл настроек. Измените это на False, и Django отобразит стандартная 404 стр.

1 Ответ

1 голос
/ 14 марта 2019

Django get_object_or_404 работает, как показано ниже.

get_object_or_404(klass, *args, **kwargs)

Вызывает get () для данного менеджера модели, но вызывает Http404 вместо исключения DidNotExist модели.В вашем случае ваш URL-адрес не настроен должным образом.Попробуйте внести изменения это:

path('/<int:id>/', position_detail_view, name='detail')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...