2016-08-17 10 views
0

質問が愚かであれば私の謝罪、私はこれを初心者です。私はdjango Webアプリケーションを作成しています。私はその中に形を作りました。私がフォームを送信すると、フォームを開くときに初めて同じ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 %} 
+0

あなたの正規表現は/ create_recipe_rule/5/''のようなURLにマッチしますが、URLエラーメッセージ '/ create_recipe_rule /'に 'recipe_pk'引数がありません。あなたのテンプレートを示してください、それは問題が何かを示唆するかもしれません。 – Alasdair

+1

フォームのアクション属性はどのように設定されていますか?エラーメッセージには、http:// [ip_adress]:[port]/create_recipe_rule /が見つからないことと、最後にプライマリキーの値が追加されていないためです。 urls.pyのURL宣言には最後にpk値が必要です。 – user4426017

+0

私はここにテンプレートを掲載しました。この – Elisha512

答えて

1

action="/create_recipe_rule/"があり、レシピIDがありません。

1つの方法として、フォームからアクションを削除するだけです。ブラウザはリクエストを現在のURLに送信します。

<form method="post"> 

フォームアクションを含める場合は、まずテンプレートコンテキストにレシピIDを含めるようにビューを更新する必要があります。

return render(request, 'create_recipe_rule.html' , {'form': form, recipe_id: recipe_id }) 

次に、フォームアクションを更新してレシピIDを含めることができます。

action="/create_recipe_rule/{{ recipe_id }}" 

それはあなたがテンプレート内のURLをハードコーディングされないように、{% url %}タグを使用することをお勧めします:

action="{% url 'create_recipe_rule' recipe_id %}" 
+0

でこれを教えてください。どうもありがとう! @Alasdair – Elisha512

関連する問題