Отправка формы Django перенаправляет на неправильный url
Я пытаюсь воспользоваться этим учебником и своей собственной идеей. Предполагается, что это будет торговая площадка.
У меня есть приложение под названием Creator (поставщики)
- I am trying to let the users add new products by themselves using
views.add_product
,add_product.html
, andforms.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 файле