2016-06-01 4 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로 양식을 만들 수 있습니다. 사용자 입력을 받아 장고 양식 필드의 값을 사용자가 입력 한 값으로 설정합니다. 나는 뭔가를 다시 얻어야하지만 뷰의 변수 'data'는 사용자 입력을 포함하지 않습니다.

감사

답변

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를 넘어서는 것은 재미있을 것입니다. 대답이 도움이 되었다면, 자유롭게 upvote하고 받아 들일 수 있습니다 :-) –