1. 程式人生 > 程式設計 >django處理select下拉表單例項(從model到前端到post到form)

django處理select下拉表單例項(從model到前端到post到form)

現在假如要寫一個按照"標題",'內容','作者'等等進行鍼對性的選擇,這時需要涉及到使用select下拉表單來進行選擇.django是可以比較簡單的解決這個問題的.

下面是model:

from django.db import models
 
class TestModel(models.Model):
  SELVALUE = (
    ('標題','first'),#前面是展示在前端介面的內容,後面的'first'是真正存在資料庫中的
    ('內容','second'),('作者','third'),)
  select_value = models.CharField(max_length=10,choices=SELVALUE)

接下來我們寫forms:

from django import forms
 
class SelectTestForm(forms.Form):
  SELVALUE = (
    ('標題',('內容',)
  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傳到前端,前端就可以藉助這個form填充介面
    })
 
  def post(self,request):
    select_form = SelectTestForm(request.POST)
    if select_form.is_valid():
      get_value = request.POST.get('sel_value',"") #這裡可以取到下拉表單中的值
      #接下來就是儲存數值與其他邏輯了
 
    else:
      #表單驗證未通過的邏輯,多半要重新填寫或直接給個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這個字典,然後把key,value成對取出 #}
    {% for key,value in select_form.SELVALUE %}
      <option value="{{ value }}">{{ key }}</option>
    {% endfor %}
  </select>
  <input type="submit" value="測試"/>
  {% csrf_token %}
</form>
</body>
</html>

補充知識:Django 表單,模型 結合前端select 顯示

ModelChoiceField 使用方法

使用ModelChoiceField方法向前端提供模型

後端 forms.py

  default_tester = forms.ModelChoiceField(
    label='測試人員',queryset=User.objects.all(),required=True
  )

前端程式碼

 {% for user in form.default_tester.field.queryset %}
            <option value="{{ user.pk }}">
              {{ user }}
            </option>
          {% endfor %}

以上這篇django處理select下拉表單例項(從model到前端到post到form)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。