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 = (
        ('标题', 'first'),
        ('内容', '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', "") #这里可以取到下拉表单中的值
            #接下来就是保存数值与其他逻辑了

        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>

 

参考链接(感谢大神):

https://blog.csdn.net/sharonITlion/article/details/78571795

https://www.cnblogs.com/yangmv/p/5327427.html

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呆萌的代Ma

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值