私は、サブミットしてアイテムをデータベースにアップロードするフォームを作成しました。問題は、URLが異なるため、私はf5キーを押すとフォームを再度送信することです。URLパターンを使用する適切な方法
私はこれらの2つのURLパターン
urlpatterns = [
url(r'(?i)^CMS/$', views.CMS, name='CMS'),
url(r'^createItem/$', views.createItem, name='createItem')
]
を持っており、私の見解では、この
def CMS(request):
form = itemCreateForm()
context = {
'form' : form,
'message' : 'Content Manage Site'
}
return render(request, 'CMS.html', context)
def createItem(request):
f = itemCreateForm(request.POST)
if f.is_valid():
f.save()
pass
form = itemCreateForm()
context = {
'form' : form,
'message' : 'ItemCreated!'
}
return render(request, 'CMS.html', context)
CMS.html
{% if message %}
{{ message }}
{% endif %}
<div class='newItemFields'>
<form action="{% url 'kar:createItem' %}" method="POST">
{% csrf_token %}
{{ form.as_p }}
<input type="submit">
</form>
</div>
私のフォーム
class itemCreateForm(ModelForm):
class Meta:
model = item
fields = ['name', 'type', 'price']
のように見えます
私はホームページ/ CMS /で始まり、フォームに記入してsubmitを押すと、表示機能createItem
が実行され、オブジェクトが作成されてデータベースに保存されます。ユーザーをホームページ/ CMS/createItemに送信します。そして、今度はユーザがf5キーを押すたびに、入力フィールドが空でも(私の頭を囲むことはできませんが)、createItem関数が再度実行され、前のものと同じ値を持つ別のオブジェクトをデータベースに挿入します。
また、私は二度と疑問を感じるform = itemCreateForm()
を書きますか?
私がしたいのは、createItemを実行した後、homepage/CMS/createItemではなくホームページ/ CMS /にユーザーを戻す必要があるということです。それが正しい方法でしょうか?または、これを行うためのスマートな方法があります。
が、これは今整理されたテンプレート
メッセージ表示部に小さな変更を必要とし、もう必要ありませんか? – e4c5