Django 表单提交重定向到错误 url

Django form submission redirecting to wrong url

我正在尝试从 this 教程和我自己的东西中寻求帮助。它应该是一个市场。

我有一个名为 Creator(供应商)的应用程序

当我尝试提交 add_product 表单时,出现此错误

错误 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 == 'POST':
        form = ProductForm(request.POST, request.FILES)

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

            return redirect('creator_overview')
    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 文件