Приносим извинения, если вопрос глуп, я новичок в этом. Я создаю веб-приложение django. Я создал внутри него форму. Когда я отправляю форму, она говорит, что «url» не найден, даже если один и тот же URL-адрес загружается в первый раз при открытии формы. Это меня пугает. Вот мой код:Django url не найден при отправке формы
#forms.py
class Recipe_ruleForm(forms.ModelForm):
class Meta:
model = Recipe_rule
fields = ('content',)
#urls.py
url(r"^create_recipe_rule/(?P<recipe_pk>[0-9]+)/$",views.create_recipe_rule, name="create_recipe_rule"),
#views.py
def create_recipe_rule(request, recipe_pk):
form = Knowledgebase_ruleForm
selected_recipe = Recipe.objects.get(pk = recipe_pk)
if request.method == 'POST':
form = Recipe_ruleForm(request.POST)
if form.is_valid():
#current_user = request.user
data = form.cleaned_data
recipe_rule_data=Recipe_rule.objects.create(recipe=selected_recipe, content=data['content'])
recipe_rule_data.save()
recipe_rule = Recipe_rule.objects.get(pk = recipe_rule_data.pk)
recipe=selected_recipe
recipe = Recipe.objects.get(pk = recipe.pk)
return redirect('recipe_detail', pk=recipe.pk)
else:
messages.error(request, "Error")
return render(request, 'create_recipe_rule.html' , {'form': form})
Здесь ошибка, когда я отправить форму:
Страница не найдена (404) Запрос Метод: POST запрос URL: http://[ip_adress]:[port]/create_recipe_rule/
ОБНОВЛЕНИЕ:
Это мой шаблон:
{% extends "account/base.html" %}
{% load i18n %}
{% load bootstrap %}
{% block body_class %}applications{% endblock %}
{% block head_title %}{% trans "Create recipe" %}{% endblock %}
{% block body %}
<form action="/create_recipe_rule/" method="post">
{% csrf_token %}
<div class="form-group">
<label for="{{ form.content.label }}">{{ form.content.label }}:</label>
<textarea type="{{ form.content.type }}" name="{{ form.content.name }}" max_length="500" class="form-control" id="{{ form.content.id }}"></textarea>
</div>
<input class="btn btn-default" type="submit" value="submit">
</form>
{% endblock %}
Ваше регулярное выражение будет соответствовать URLs как '/ create_recipe_rule/5 /', но URL из вашего сообщения об ошибке '/ create_recipe_rule /' отсутствует аргумент 'recipe_pk'. Пожалуйста, покажите свой шаблон, он может дать подсказку, в чем проблема. – Alasdair
Атрибут действия вашей формы установлен? В сообщении об ошибке говорится, что http: // [ip_adress]: [port]/create_recipe_rule/не может быть найден, и это связано с тем, что в конце не добавлено значение первичного ключа. Объявление вашего URL-адреса в вашем urls.py требует значения pk в конце. – user4426017
Я разместил здесь свой шаблон, пожалуйста, сообщите мне об этом – Elisha512