内容简介:翻译自:https://stackoverflow.com/questions/29714763/django-check-if-checkbox-is-selected
项目,可以使用一些帮助.它只是一个简单的数据库查询前端.
目前,我仍然坚持使用复选框,单选按钮等来改进搜索
我遇到的问题是弄清楚如何知道何时选中复选框(或多个).到目前为止我的代码是这样的:
views.py
def search(request): if 'q' in request.GET: q = request.GET['q'] if not q: error = True; elif len(q) > 22: error = True; else: sequence = Targets.objects.filter(gene__icontains=q) request.session[key] = pickle.dumps(sequence.query) return render(request, 'result.html', {'sequence' : sequence, 'query' : q, 'error' : False}) return render(request, 'search.html', {'error': True})
search.html
<p>This is a test site</p></center> <hr> <center> {% if error == true %} <p><font color="red">Please enter a valid search term</p> {% endif %} <form action="" method="get"> <input type="text" name="q"> <input type="submit" value="Search"><br> </form> <form action="" method="post"> <input type='radio' name='locationbox' id='l_box1'> Display Location <input type='radio' name='displaybox' id='d_box2'> Display Direction </form> </center>
我目前的想法是,我检查选择了哪些复选框/单选按钮,具体取决于哪些,将查询正确的数据并显示在表格中.
特别是:
如何检查是否选中了特定的复选框?以及如何将此信息传递到views.py
收音机按钮:
在单选按钮的HTML中,您需要所有相关的无线电输入共享相同的名称,具有预定义的“值”属性,并且最佳地具有周围的标签标记,如下所示:
<form action="" method="post"> <label for="l_box1"><input type="radio" name="display_type" value="locationbox" id="l_box1">Display Location</label> <label for="d_box2"><input type="radio" name="display_type" value="displaybox" id="d_box2"> Display Direction</label> </form>
然后在您的视图中,您可以通过检查POST数据中的共享“name”属性来查找所选的内容.它的值将是HTML输入标记的关联“value”属性:
# views.py def my_view(request): ... if request.method == "POST": display_type = request.POST.get("display_type", None) if display_type in ["locationbox", "displaybox"]: # Handle whichever was selected here # But, this is not the best way to do it. See below...
这有效,但需要人工检查.最好先创建一个Django表单.然后Django会为你做那些检查:
forms.py:
from django import forms DISPLAY_CHOICES = ( ("locationbox", "Display Location"), ("displaybox", "Display Direction") ) class MyForm(forms.Form): display_type = forms.ChoiceField(widget=forms.RadioSelect, choices=DISPLAY_CHOICES)
your_template.html:
<form action="" method="post"> {# This will display the radio button HTML for you #} {{ form.as_p }} {# You'll need a submit button or similar here to actually send the form #} </form>
views.py:
from .forms import MyForm from django.shortcuts import render def my_view(request): ... form = MyForm(request.POST or None) if request.method == "POST": # Have Django validate the form for you if form.is_valid(): # The "display_type" key is now guaranteed to exist and # guaranteed to be "displaybox" or "locationbox" display_type = request.POST["display_type"] ... # This will display the blank form for a GET request # or show the errors on a POSTed form that was invalid return render(request, 'your_template.html', {'form': form})
复选框:
复选框的工作方式如下:
forms.py:
class MyForm(forms.Form): # For BooleanFields, required=False means that Django's validation # will accept a checked or unchecked value, while required=True # will validate that the user MUST check the box. something_truthy = forms.BooleanField(required=False)
views.py:
def my_view(request): ... form = MyForm(request.POST or None) if request.method == "POST": if form.is_valid(): ... if request.POST["something_truthy"]: # Checkbox was checked ...
进一步阅读:
https://docs.djangoproject.com/en/1.8/ref/forms/fields/#choicefield
https://docs.djangoproject.com/en/1.8/ref/forms/widgets/#radioselect
https://docs.djangoproject.com/en/1.8/ref/forms/fields/#booleanfield
翻译自:https://stackoverflow.com/questions/29714763/django-check-if-checkbox-is-selected
以上所述就是小编给大家介绍的《python – Django检查是否选中了复选框》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- JQuery选中select组件被选中的值方法
- JQuery选中select组件被选中的值方法
- android 中心区域选中图表 WheelChart
- 在ng-repeat内Checkbox默认选中
- Xshell 配置 鼠标选中即复制,右键即粘贴的功能
- 手撕一个让人 “欲罢不能” 的水波纹选中控件
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。