DjangoフォームのドキュメンテーションとDjangoチュートリアルのセクション(パート4)のセクションを参照して、本当に簡単なことを実現したいと思っています。いくつかのSOスレッド。Django:フォームのユーザ入力に基づいて別のURLにリダイレクト
私は、ユーザーがいくつかのバスケットボール選手の名前を入力できる形式のホームページを持っています。彼らが提出すると、他のページ、player_statsページにリダイレクトする必要があります。このページには、そのプレーヤーに関する情報が表示されます。私は理想的には、この同じフォームをplayer_statsページ自体で利用できるようにして、その間にホームページに戻らずにプレーヤーからプレーヤーに移動することもできます。
これらのファイルがすべて「desk」にあるアプリの名前を追加する必要があります。
forms.py
from django import forms
class NameForm(forms.Form):
name = forms.CharField(label='Name', max_length=100)
index.htmlを
<div> HOME PAGE </div>
<form action="{% url 'player_stats' name %}" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="Go"/>
</form>
views.py
def index(request):
template = loader.get_template('desk/index.html')
return HttpResponse(template.render(request))
def player_stats(request, name):
# if this is a POST request we need to process the form data
if request.method == 'POST':
# create a form instance and populate it with data from the request:
form = NameForm(request.POST)
# check whether it's valid:
if form.is_valid():
# process the data in form.cleaned_data as required
# redirect to a new URL:
name = form.cleaned_data['name']
# if a GET (or any other method) we'll create a blank form
else:
form = NameForm()
template = loader.get_template('desk/player_stats.html')
context = get_player_stats_context(tag)
return HttpResponse(template.render(context, request))
urls.py
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^(?P<name>([\s\S]+))/player_stats/$', views.player_stats, name='player_stats'),
]
私はテンプレートが常にビューによって提供されるいくつかのコンテキストオブジェクトを持っていると思われるか、リダイレクトがハードコードされたURLにあるので、ドキュメントに示す例では、私の状況とは若干異なっていると思うことばかりフォームが有効で、urlが送信されたフォームの内容に依存しない場合に発生します。私はここにいないのですか?
でなければなりません。この方法では、リダイレクトも必要ありません。 – Selcuk