靓号管理(2)

该文章描述了如何在Django中创建一个管理靓号的模型,包括手机号、价格、级别和状态字段。使用ModelForm进行表单渲染和数据校验,并提供了添加靓号的视图功能,当提交时会进行号码格式的验证并保存到数据库。
摘要由CSDN通过智能技术生成

表结构:

根据表结构的需求,在models.py中创建类。

主要是创建级别和默认级别

class PrettyNum(models):
    """靓号表"""
    models = models.CharField(verbose_name="手机号", max_length=32)
    price = models.IntegerField(verbose_name="价格")
    level_choices = ((1, "1级"),
                     (2, "2级"),
                     (3, "3级"),
                     (4, "4级"),
                     )
    level = models.SmallIntegerField(verbose_name="级别",choices = level_choices,default=1)
    status_choices = (
        (1, "已占有"),
        (2, "未使用"),
    )
    status = models.SmallIntegerField(verbose_name="状态", choices = status_choices,default=2)

 数据库生成:

python manage.py makemigrations
 
python manage.py migrate

靓号列表

  • URL
  • 函数:
    • 获取所有靓号
    • 结合html+render将所有靓号罗列出来

id  号码  价格  级别(中文)  状态(中文)


新建靓号

  • 列表点击跳转:/pretty/add/
  • url
  • ModelForm类

from  django import forms

class PrettyModelForm(forms.ModelForm): 

  • 函数  : 实例化类对象,通过render将对象传入到html中,模板循环展示所有的靓号 
  • class PrettyModelForm(forms.ModelForm):
        class Meta:
            model = models.PrettyNum
            # fields = ["mobile", "price", "level", "status"]
            fields = "__all__"
            # exclude = ['level'] 排除那个字段
    
        # 保留bootstrap的格式
        def __init__(self, *args, **kwargs):
            super().__init__(*args,**kwargs)
            for name, field in self.fields.items():
                field.widget.attrs = {"class": "form-control", "placeholder": field.label}
    
    def pretty_add(request):
        """添加靓号"""
        form = PrettyModelForm()
        return render(request, 'pretty_add.html', {"form": form})

使用前面的模板

{% extends 'layout.html' %}
{% load static %}
{% block content %}
<div class="container">
    <div class="panel panel-default">
        <div class="panel-heading">
            <h3 class="panel-title">新建靓号</h3>
        </div>

        <div class="panel-body">
            <form method="POST" novalidate>
                {% csrf_token %}

                {% for field in form %}
                <div class="form-group">
                    <label>{{ field.label }}</label>
                    {{ field }}
                    <span style="color:red;">{{ field.errors.0 }}</span>
                </div>
                {% endfor %}

                <button type="submit" class="btn btn-info">提交</button>
            </form>
        </div>
    </div>
</div>
{% endblock %}

 提交,数据校验保存到数据库,跳回到靓号列表

号码必须为11位

 from django.core.exceptions import ValidationError
   #  错误校验
    # 号码必须为11位,  钩子方法,clean
    def clean_mobile(self):
        txt_mobile = self.cleaned_data["mobile"]
        if len(txt_mobile) != 11:
            raise ValidationError("格式错误")
        return txt_mobile
def pretty_add(request):
    """添加靓号"""
    if request.method == 'GET':
        form = PrettyModelForm()
        return render(request, 'pretty_add.html', {"form": form})
    form = PrettyModelForm(data=request.POST)
    if form.is_valid():
        form.save()
        return redirect('/pretty/list')
    return render(request, 'pretty_add.html', {"form": form})

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值