2016-06-01 17 views
2

私は単純なhtmlページを設定しています。このページは、ユーザーが入力した情報をキャプチャし、ユーザーが入力した情報に基づいて新しいページを作成します。問題は、バックアップされたユーザーが入力した情報を取得できないことと、どこに間違っているのか理解できないことです。私のhtmlの関連部分をこのように設定されてPython Djangoユーザー入力を取得する

class BusinessName(forms.Form): 
    business_name = forms.CharField(widget = forms.HiddenInput(), required = False) 

def suggestion(request): 
    if request.method == 'POST': 
     form = BusinessName(request.POST) 
     if form.is_valid(): 
      data=form.cleaned_data 
      context = insert_function_here(data) 
      return render(request,'mainpage.html', context) 
    else: 
     form = BusinessName() 
     context = {'form':form} 
     return render(request,'mainpage.html', context) 

マイforms.pyはこのような設定である:

マイビューファイルには、このような設定であります

<form id="user_input_form" method="post" action="http://127.0.0.1:8000/textinsighters/suggestion"> 
    Enter Your Business Name : <input type="text" list="browsers" name="browser" id="user_input"> 
    {% csrf_token %} 
    {{ form }} 
     <datalist id="browsers"> 
     <option value="Internet Explorer"> 
     <option value="Firefox"> 
     <option value="Chrome"> 
     <option value="Opera"> 
     <option value="Safari"> 
     </datalist> 
     <button onclick="myFunction()">Submittt</button> 
</form> 
<script> 
    function myFunction() { 
document.getElementById("id_business_name").value = document.getElementById("user_input").value;            
document.getElementById("user_input_form").submit(); 
    } 
</script> 

私はhtmlでフォームを作成しているので、自動補完リストが必要です。ユーザー入力を取得し、Djangoフォームフィールドの値をユーザーが入力した値に設定して送信します。私は戻って何かを取得する必要がありますが、ビュー内の変数 'データ'はユーザー入力を含んでいません。

おかげ

答えて

1

あなたがウィジェットとしてforms.HiddenInput()を使用して、その後、フォームフィールドを自分で追加しています。これはそのようには機能しません。あなたは何のTextInputにフィールドクラスを変更した場合:

class BusinessName(forms.Form): 
    business_name = forms.CharField(widget = forms.TextInput()) 

をあなたは目標がATTRS辞書提供することで、カスタムウィジェットに、これを行うことができる属性を追加することであるなら:

class BusinessName(forms.Form): 
    business_name = forms.CharField(widget = forms.TextInput(attrs={ 
     'list': 'browser' 
    })) 

かをdjango-widget-tweaksパッケージを見て、テンプレートに属性を追加することができます。

+0

ありがとうございます、完璧に動作します。 forms.pyファイル内のリストを定義することは可能ですか、それともhtmlで定義する必要がありますか?私のリストは100のオプションのように大きくなるだろう、なぜ私はオートコンプリート機能が必要なのか。 これを実装するにはより良い方法がありますか? –

+0

あなたのリストがこれに近づく大きな方法に成長できるなら、代わりにforms.CharField()を作成し、このフィールドを満たす検索のためのAPIソースを使用することができます。最大1kのオプションPython/Djangoは簡単に管理するはずですが、それを超える検索APIは面白いでしょう。答えがあなたを助けたら、それをアップアップして受け入れてください:-) –

関連する問題