2012-07-20 39 views
5

我應該使用下一個建築嗎?如何從下拉框django中獲取值?

def PageObjects(request): 
    q = bla_bla_bla(bla_bla) 
    answer = request.POST['value'] 


<form action="PageObjects" method="get"> 
     <select > 
     <option selected="selected" disabled>Objects on page:</option> 
     <option value="10">10</option> 
     <option value="20">20</option> 
     <option value="30">30</option> 
     <option value="40">40</option> 
     <option value="50">50</option> 
     </select> 
     <input type="submit" value="Select"> 
    </form> 

我該如何解決這個問題?我需要寫什麼?

回答

2

我會建議用郵寄您的數據:

<form action="PageObjects" method="post"> 
    <select > 
    <option selected="selected" disabled>Objects on page:</option> 
    <option value="10">10</option> 
    <option value="20">20</option> 
    <option value="30">30</option> 
    <option value="40">40</option> 
    <option value="50">50</option> 
    </select> 
    <input type="submit" value="Select"> 
</form> 

你應該訪問你的表格值通過cleaned_data字典:

def page_objects(request): 
    if request.method == 'POST': 
    form = YourForm(request.POST) 

    if form.is_valid(): 
     answer = form.cleaned_data['value'] 

我真的建議您閱讀Django文檔:

https://docs.djangoproject.com/en/1.4/topics/forms/#using-a-form-in-a-view

+0

我回答了用戶Paritosh Singh關於我的問題。我如何修復它,如果我會使用你的建議? – 2012-07-23 18:30:15

+0

@MaxL在決定是使用POST還是GET時,你應該遵循良好的HTTP實踐。這裏有一篇關於如何決定哪種方法適合你的場景的好文章http://stackoverflow.com/questions/46585/when-do-you-use-post-and-when-do-you-use-get。但我絕對不認爲這裏有足夠的信息來說明一個。 – 2015-04-07 03:56:58

+1

@AustinA感謝您的建議,但我在2年前提出了這個問題:) 現在我有更多經驗:) – 2015-04-08 06:15:47

6

提供一個名稱標籤,像

<select name="dropdown"> 
    <option selected="selected" disabled>Objects on page:</option> 
      <option value="10">10</option> 
      <option value="20">20</option> 
      <option value="30">30</option> 
      <option value="40">40</option> 
      <option value="50">50</option> 
    </select> 

訪問它,鑑於像

def PageObjects(request): 
    q = bla_bla_bla(bla_bla) 
    answer = request.GET['dropdown'] 
+0

我可以使用GET方法嗎?請解釋我如何將保存箱中的值發送到我的view.py? – 2012-07-20 20:26:25

+0

它取決於你使用的表單方法,如果你正在使用

你可以使用GET else使用POST。如果您希望它訪問任何(無論是GET還是POST),請使用REQUEST。 – 2012-07-20 20:29:28

+0

你的情況,你應該使用GET,看到答案 – 2012-07-20 20:32:03

0

使 'your_app_folder'

在forms.py

的內部文件forms.py:

class FilterForm(forms.Form): 
    FILTER_CHOICES = (
     ('time', 'Time'), 
     ('timesince', 'Time Since'), 
     ('timeuntil', 'Time Untill'), 
    ) 

    filter_by = forms.ChoiceField(choices = FILTER_CHOICES) 

in views.py

from .forms import FilterForm 

def name_of_the_page(request): 
form = FilterForm(request.POST or None) 
answer = '' 
if form.is_valid(): 
    answer = form.cleaned_data.get('filter_by') 
    // notice `filter_by` matches the name of the variable we designated 
    // in forms.py 

這種形式會生成以下HTML:

<tr><th><label for="id_filter_by">Filter by:</label></th><td><select id="id_filter_by" name="filter_by" required> 
<option value="time" selected="selected">Time</option> 
<option value="timesince">Time Since</option> 
<option value="timeuntil">Time Untill</option> 
</select></td></tr> 

注意帶屬性的選項字段中選擇,當您提交表單,在你的views.py文件,你會抓住從selected屬性數據與線

answer = form.cleaned_data.get('filter_by')