Как правильно определить URL-адрес в Django (страница ошибки не найдена (404))Python

Программы на Python
Anonymous
Как правильно определить URL-адрес в Django (страница ошибки не найдена (404))

Сообщение Anonymous »

Я изучаю Django и создаю следующий проект:
Мой проект — es. У меня есть три приложения: event, items_dashboard и item. Каждое событие имеет одну item_dashboard и ноль или более элементов.
Когда пользователь находится в /event//items_dashboard/ index.html есть ссылка для добавления нового элемента к событию . Откроется форма /item/new/. Когда я заполняю и отправляю эту форму, я получаю следующую ошибку:

Код: Выделить всё

Page not found (404)
Request Method: POST
Request URL:    http://127.0.0.1:8000/item/new/
Using the URLconf defined in event_site.urls, Django tried these URL patterns, in this order:

[name='index']
event/
item/ new/ [name='new']
item/ / [name='detail']
item/ /delete [name='delete_item']
The current path, item/new/, didn’t match any of these.
Вот мой код:
es/urls.py

Код: Выделить всё

urlpatterns = [
path('', include('core.urls')),
path('admin/', admin.site.urls),
path('event/', include('event.urls', namespace="event")),
path('item/', include('item.urls', namespace="item")),
# path('', index, name='index')
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
event/urls.py

Код: Выделить всё

app_name = 'event'

urlpatterns = [
path('new/', views.new, name='new'),
path('/', views.detail, name='detail'),
path('/items_dashboard/', include('items_dashboard.urls', namespace='items_dashboard')),
path('/item/', include('item.urls', namespace='item'))
]
item/urls.py

Код: Выделить всё

app_name = 'item'

urlpatterns = [
# path('new/', views.new, name='new'),
path('new/', views.new, name='new'),
path('/', views.detail, name='detail'),
]
item/views.py

Код: Выделить всё

@login_required()
def new(request, event_id):
event = get_object_or_404(Event, pk=event_id)
if request.method == "POST":
form = NewItemForm(request.POST, request.FILES)
if form.is_valid():
item = form.save(commit=False)
item.event = event
item.creator = request.user
item.save()
return redirect('item:detail', pk=item.id)
else:
form = NewItemForm()

return render(request, 'item/form.html', {
'form': form,
'title': 'Add new item'
})
из активности я вижу, что при отправке формы вызывается функция new() и предоставляется правильный event_id
И наконец, item/templates/item/form.html:

Код: Выделить всё

{% extends 'core/base.html' %}

{% block title %}{{ title }}{% endblock %}

{% block content %}
{{ title }}

{% csrf_token %}

{{ form.as_p }}

{% if form.errors or form.non_field_errors %}

{% for field in form %}
{{ field.errors }}
{% endfor %}

{{ form.non_field_errors }}

{% endif %}

Create Item

{% endblock %}

Как правильно определить URL-адрес для этого сценария?
Я попробовал решения, представленные в похожих вопросах, но они не сработали.
п>

Подробнее здесь: https://stackoverflow.com/questions/786 ... -found-404

Вернуться в «Python»