Отправка формы Django перенаправляет на неправильный url

Я пытаюсь воспользоваться этим учебником и своей собственной идеей. Предполагается, что это будет торговая площадка.

У меня есть приложение под названием Creator (поставщики)

  • I am trying to let the users add new products by themselves using views.add_product, add_product.html, and forms.py

когда я пытаюсь отправить форму add_product, она выдает эту ошибку

Error Page not found (404) Request Method: POST Request URL: http://127.0.0.1:8000/creator/

(Я не пытаюсь перенаправить его на эту страницу, а скорее 'url 'creator_overview''

Проект urls.py

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('core.urls')),
    path('creator/', include('creator.urls')),
] + static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)


creator/urls.py

urlpatterns = [

    path('sell_on_cosloo/', sell_great_things, name='creator_signup'),
    path('creator_overview/',creator_overview , name='creator_overview'),
    path('add_product/',add_product , name='add_product'),
...
]

creator/views.py


@login_required
def add_product(request):
    if request.method == 'GET':
        form = ProductForm(request.POST, request.FILES)

        if form.is_valid():
            product = form.save(commit=False)
            product.vendor = request.user.vendor
            product.slug = slugify(product.title)
            product.save()

            return redirect('vendor_admin')
    else:
        form = ProductForm()
    
    return render(request, 'creator/add_product.html', {'form': form})

creator/forms.py

<form method="post" action="." enctype="multipart/form-data">

  
    {% csrf_token %}

    {{ form.as_p }}

    <div class="field">
        <div class="control">
            <button class="button is-dark is-uppercase">Submit</button>
        </div>
    </div>
</form>

add_product.html

{% extends 'core/base.html' %} {% block title %}Add product | {% endblock %} {%
block content %}

<h1 class="title">Add product</h1>

<form method="post" action="." enctype="multipart/form-data">
  {% csrf_token %} {{ form.as_p }}

  <div class="field">
    <div class="control">
      <button class="button is-dark is-uppercase">Submit</button>
    </div>
  </div>
</form>
{% endblock %}

Мир!!! :))

Проблема заключается в атрибуте action в форме.

Вместо :

<form method="post" action="." enctype="multipart/form-data">

Здесь форма пытается быть отправленной на http://127.0.0.1:8000/creator/ url, который не является правильным

Попробуйте это :

<form method="post" action="{% url 'add_product' %}" enctype="multipart/form-data">

Правильный url - http://127.0.0.1:8000/creator/add_product/, как определено в creator/urls.py файле

Вернуться на верх