フォームが送信の更新 - Django -- python フィールド と html フィールド と django フィールド と forms フィールド 関連 問題

Form refreshes on submit - Django












2
vote

問題

日本語

ここで述べたものと同様の問題があります。非常に単純なユーザー入力Django

私は上記の解決策からコードサンプルを取ったが、私はまだ同じ問題を抱えています。 <コード> calculate Submitボタンをクリックすると、結果ビューに移動せずにフォームがクリアされます。

私はそれが小さな問題であることを確信していますが、私はしばらくの間それに立ち往生しています、そしていくつかの助けを借りてすることができました。以下の関連コードを投稿します。

Views.py:

<事前> <コード> from django.shortcuts import render from django.http import HttpResponse def index(request): return render(request, 'form.html') def result(request): if request.method == "POST": number1 = request.POST.get("firstnumber", None) number2 = request.POST.get("secondnumber", None) answer = number1 + number2 message = "The result of number1 + number2 is " + answer else: message = "You submitted an empty form" return HttpResponse(message)

form.html:

<事前> <コード> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <form method="POST" action="/calculator/"> {% csrf_token %} Enter number 1: <br> <input type="text" name="firstnumber"> <br> Enter number 2: <br> <input type="text" name="secondnumber"> <br> <input type="submit" value="Calculate"> </form> </body> </html>

Calculator urls.py:

<事前> <コード> from django.conf.urls import url from . import views urlpatterns = [ url(r'^$', views.index, name='index'), url(r'^$', views.result, name='result'), ]

exerration4 urls.py:

<事前> <コード> from django.conf.urls import include, url from django.contrib import admin urlpatterns = [ url(r'^calculator/', include('calculator.urls')), url(r'^admin/', admin.site.urls), ]
英語

I have a similar problem to the one mentioned here, Very simple user input in django

I have taken code samples from the above solution but I am still having the same problem. When I click on the calculate submit button the form just clears without taking me to the results view.

I'm certain that it is a small problem but I have been stuck on it for a while and could do with some help. I will post the relevant code below:

views.py:

from django.shortcuts import render from django.http import HttpResponse   def index(request):     return render(request, 'form.html')   def result(request):     if request.method == "POST":         number1 = request.POST.get("firstnumber", None)         number2 = request.POST.get("secondnumber", None)         answer = number1 + number2         message = "The result of number1 + number2 is " + answer     else:         message = "You submitted an empty form"     return HttpResponse(message) 

form.html:

<!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <title></title> </head> <body>      <form method="POST" action="/calculator/">         {% csrf_token %}         Enter number 1: <br>         <input type="text" name="firstnumber">         <br>         Enter number 2: <br>         <input type="text" name="secondnumber">         <br>         <input type="submit" value="Calculate">     </form>  </body> </html> 

calculatorurls.py:

from django.conf.urls import url from . import views  urlpatterns = [     url(r'^$', views.index, name='index'),     url(r'^$', views.result, name='result'), ] 

exercise4urls.py:

from django.conf.urls import include, url from django.contrib import admin  urlpatterns = [     url(r'^calculator/', include('calculator.urls')),     url(r'^admin/', admin.site.urls), ] 
</div
           
 
 

回答リスト

2
 
vote
vote
ベストアンサー
 

フォームが送信されたら、

にアクセスします。 <事前> <コード> <form method="POST" action="/calculator/">

calculatorurls.py

の<コード> index ビュー <事前> <コード> imp0

とそのようなビューはすべて、フォーム自体と同じページを返します。

フォームを適切なビューにします(<コード> imp1 )

<事前> <コード> imp2

および<コード> imp3

<事前> <コード> imp4

しかし、それはではありませんの形式がDjango(通常)でどのように処理されるか。

通常、フォームは同じビューで処理されます。これは、HTTP POSTメソッドまたはHTTP GETで呼び出されたかどうかを判別します。

前者の場合、表示されたデータを処理します(最初のステップとしてデータ検証を実行します)。後者では、そのページをフォーム(すなわち、あなたのインデックスビューが今すぐ行っているの)で返します。

Djangoのウェブサイト

 

When the form is submitted, it takes you to

<form method="POST" action="/calculator/"> 

which is the index view, since in calculatorurls.py you have

url(r'^$', views.index, name='index'), 

and all such view does is returning the same page with the form itself.

Make the form point to the appropriate view (i.e. result)

<form method="POST" action="/calculator/result/"> 

and in calculatorurls.py

url(r'^result/$', views.result, name='result'), 

However, that is not how forms are handled in django (normally).

Usually forms are handled by the same view, which discriminates on whether it was called with an HTTP POST method or with an HTTP GET.

In the former case, the view processes the submitted data (performing data validation as its first step). In the latter it returns the page with the form (i.e. what your index view is doing now).

Please take the time to carefully go through the excellent official pages dedicated to working with forms on Django's website

</div
 
 
 
 

関連する質問

7  私のフォームパスワードはクリアテキストで渡されますか?  ( Is my form password being passed in clear text ) 
これは私のブラウザがいくつかのサイトにログインするときに送信されたものです: <前> http://www.some.site/login.php http / 1.0 ユーザーエージェント:OPERA / 8.26(X2000; Linux I686; Z;...

2  Microsoft SharePointでフォームを作成する方法[閉まっている]  ( How to create forms in microsoft sharepoint ) 
ここで尋ねられていることを知るのは難しいです。この問題はあいまい、曖昧で、不完全で、過度に広く、または修辞的であり、現在の形で合理的に回答することはできません。再開できるようにこの質問を...

2910  Webフォームフィールド/入力タグのブラウザのオートコンプリートを無効にするにはどうすればよいですか。  ( How do you disable browser autocomplete on web form field input tag ) 
特定の入力(またはフォームフィールド)の主要ブラウザでオートコンプリートを無効にするにはどうすればよいですか? ...

1  FlexとColdFusionでフィールドの種類やそのIDを知らずに、フォームをデータベースに保存する方法を教えてください。  ( How do i save a form to the database without knowing the field type or its id in ) 
私は、DBへの呼び出しに基づいてFlexで実行時にフォームを生成する機能を取り組んでいます。 DBへの呼び出しは、フィールドタイプ、ID、ツールチップなどをArrayCollectionとして返します.ArrayCollectionは、配列内のTypeフィール...

6  = button_toはすでに他の形式でフォームを生成しません  ( Button to does not generates form if already in an other form ) 
新しい場合は同じフォーム部分を使用して、My Case NewとPreviewの両方で編集します。 部分的にこのようなように見えるように見えます(私はHAMLを使っています) <事前> <コード> =form_tag ({:action => params[:...

1  jQueryの質問...自動的にフォームを送信して次のステップに移動する方法  ( Jquery question a way to automatically submit a form and move to the next ste ) 
基本的に、私は4つの形式(したがって4つのURL)に分割されているプロセスを持っていますが、3番目のものを完全に迂回したいです。私はそれが第三者のプロバイダーから、オープンソースではなくコード自体に到達することはできません。私が望んでいるのは、ユーザーがその3...

0  データベースからHTMLフォームにアクセスされるデータをロードする方法  ( How to load data that are accessed from database to html form ) 
getString()メソッドを使用してテーブルからデータにアクセスしようとしていて、データがいくつかの変数に格納されている場合は、送信ボタンをクリックしているときにHTMLフォームにロードする必要があります。どうやって?私を助けてください...... ...

273  HTML形式の複数の送信ボタン  ( Multiple submit buttons in an html form ) 
HTMLフォームにウィザードを作成しましょう。 1つのボタンが戻ってき、1つが進みます。 ENTER を押すと、背面ボタンが最初に表示されているので、そのボタンを使用してフォームを送信します。 例: <コード> <form> <!-- Pu...

0  StrutsのオブジェクトをJSPからフォーム値で更新する  ( Update object in struts action with form values from jsp ) 
私はフォームを構築し、自分のオブジェクトのインスタンスからのデータを指定してフィールドを事前に入力するStruts2アクションを持っています。このフォームで送信をクリックすると、2番目のアクション、My Formsubmitアクションにアクセスできます。ここで...

102  KeyPressイベントの後にjQuery .val()を手に入れるにはどうすればよいですか?  ( How can i get jquery val after keypress event ) 
私は得ました: <事前> <コード> $(someTextInputField).keypress(function() { alert($(this).val()); }); 常にキープレスの前に値を返します(フィールドが空の場合は「A」と入力し、ア...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有