溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

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

發(fā)布時間:2020-09-17 14:58:15 來源:腳本之家 閱讀:369 作者:呆萌的代Ma 欄目:開發(fā)技術(shù)

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

下面是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傳到前端,前端就可以借助這個form填充界面
    })
 
  def post(self, request):
    select_form = SelectTestForm(request.POST)
    if select_form.is_valid():
      get_value = request.POST.get('sel_value', "") #這里可以取到下拉表單中的值
      #接下來就是保存數(shù)值與其他邏輯了
 
    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 表單,模型 結(jié)合前端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)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI