django處理select下拉表單實(shí)例(從model到前端到post到form)
現(xiàn)在假如要寫一個(gè)按照"標(biāo)題",'內(nèi)容','作者'等等進(jìn)行針對(duì)性的選擇,這時(shí)需要涉及到使用select下拉表單來進(jìn)行選擇.django是可以比較簡(jiǎn)單的解決這個(gè)問題的.
下面是model:
from django.db import models
class TestModel(models.Model):
SELVALUE = (
('標(biāo)題', 'first'), #前面是展示在前端界面的內(nèi)容,后面的'first'是真正存在數(shù)據(jù)庫中的
('內(nèi)容', 'second'),
('作者', 'third'),
)
select_value = models.CharField(max_length=10, choices=SELVALUE)
接下來我們寫forms:
from django import forms
class SelectTestForm(forms.Form):
SELVALUE = (
('標(biāo)題', 'first'),
('內(nèi)容', 'second'),
('作者', 'third'),
)
sel_value = forms.CharField(max_length=10,widget=forms.widgets.Select(choices=SELVALUE))
然后就可以寫view了:
from django.shortcuts import render
from django.views.generic import View
from .forms import SelectTestForm
class TestView(View):
def get(self, request):
select_form = SelectTestForm()
return render(request, 'sel_test.html', { #這里'sel_test.html'使我們的前端頁面
'select_form': select_form, # 這里需要把form傳到前端,前端就可以借助這個(gè)form填充界面
})
def post(self, request):
select_form = SelectTestForm(request.POST)
if select_form.is_valid():
get_value = request.POST.get('sel_value', "") #這里可以取到下拉表單中的值
#接下來就是保存數(shù)值與其他邏輯了
else:
#表單驗(yàn)證未通過的邏輯,多半要重新填寫或直接給個(gè)404
pass
這是前端界面'sel_test.html':
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form method="post" action="">
<select name="sel_value">
{# 這里我們遍歷form表單中的SELVALUE這個(gè)字典,然后把key,value成對(duì)取出 #}
{% for key,value in select_form.SELVALUE %}
<option value="{{ value }}">{{ key }}</option>
{% endfor %}
</select>
<input type="submit" value="測(cè)試"/>
{% csrf_token %}
</form>
</body>
</html>
補(bǔ)充知識(shí):Django 表單,模型 結(jié)合前端select 顯示
ModelChoiceField 使用方法
使用ModelChoiceField方法向前端提供模型
后端 forms.py
default_tester = forms.ModelChoiceField(
label='測(cè)試人員', queryset=User.objects.all(), required=True
)
前端代碼
{% for user in form.default_tester.field.queryset %}
<option value="{{ user.pk }}">
{{ user }}
</option>
{% endfor %}
以上這篇django處理select下拉表單實(shí)例(從model到前端到post到form)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python 支持向量機(jī)分類器的實(shí)現(xiàn)
這篇文章主要介紹了Python 支持向量機(jī)分類器的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
Python使用wxpy模塊實(shí)現(xiàn)微信兩兩群組消息同步功能(推薦)
這篇文章主要介紹了Python使用wxpy模塊實(shí)現(xiàn)微信兩兩群組消息同步,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06
python爬蟲開發(fā)之PyQuery模塊詳細(xì)使用方法與實(shí)例全解
這篇文章主要介紹了python爬蟲開發(fā)之PyQuery模塊詳細(xì)使用方法與實(shí)例全解,需要的朋友可以參考下2020-03-03
python實(shí)現(xiàn)多線程采集的2個(gè)代碼例子
這篇文章主要介紹了python多線程采集代碼例子,使用了Threading、Queue、MySQLdb等模塊,需要的朋友可以參考下2014-07-07
Django學(xué)習(xí)之靜態(tài)文件與模板詳解
這篇文章主要為大家詳細(xì)介紹了Django靜態(tài)文件與模板,使用數(shù)據(jù)庫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02

