如何从下拉框django中获取值?

如何从下拉框django中获取值?,django,drop-down-menu,Django,Drop Down Menu,我应该使用下一个结构吗 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:</o

我应该使用下一个结构吗

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>
def页面对象(请求):
q=布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉
回答=请求。发布['value']
页面上的对象:
10
20
30
40
50

我怎样才能解决这个问题?我需要写什么?

给标签起个名字,比如

<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>

我建议您通过以下方式发送数据:

<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>
我真的建议您阅读Django文档:


在“您的应用程序文件夹”中创建一个文件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>

我可以使用GET方法吗?解释它将如何将值从dropbox发送到my view.py?这取决于您使用的表单方法,如果您使用的是GET-else-use-POST。如果您希望它访问任何(GET或POST)use请求。在您的情况下,您应该使用GET,请参阅答案中的更改您面临的问题。意思是你得到了?dropdown=在url中…它正在执行“PageObjects”操作,并将我的url更改为…/list/PageObject,并显示404错误,因为该url未写入我的url。pyi就我的问题回答了用户Paritosh Singh。如果我使用你的建议,我如何修复它?@MaxL在决定是否使用
POST
GET
时,你真的应该遵循良好的http实践。这里有一篇关于如何决定哪种方法适合您的场景的好文章。但我绝对不认为这里有足够的信息来说明一个比另一个好。@AustinA谢谢你的建议,但我两年前问了这个问题:)现在我有了更多的经验:)如果一个表单中有多个下拉列表,我们可以为每个选择标记声明id,如何使用“id”属性访问视图中特定下拉列表的值?
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
<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>
answer = form.cleaned_data.get('filter_by')