手机号码 - 正则表达式的校验方法

views.py 

 

复制代码
'''增加靓号'''
from django.core.validators import RegexValidator
class NumberModelForm(forms.ModelForm):

    # 重新定义一次 手机号的格式问题
    mobile = forms.CharField(
        label='手机号',
        validators = [RegexValidator(r'^1[3-9]\d{9}$', '手机号格式错误')],
    )

    class Meta:
        model = models.Number
        # 1. 方法1  fields = ['mobile', 'price', ....] 使用的字段
        # 2. 方法2  exclude = ['mobile']  排除的字段
        # 3. 方法3  fields = '__all__' 全部字段
        fields = '__all__'

        # 重定义方法 添加input 样式
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        # 循环出所有字段, 并用插件 插入 clas 样式
        for name, field in self.fields.items():
            # if name == 'name':
            #     continue
            field.widget.attrs = {"class": "form-control", "placeholder": field.label}

def number_add(request):
    if request.method =='GET':
        #实例化
        form = NumberModelForm()
        return render(request, 'number_add.html', {'form': form})
    # 校验数据
    form = NumberModelForm(data=request.POST)
    # 校验数据
    if form.is_valid():
        print(form.cleaned_data)
        # 保存数据
        form.save()
        return redirect('/number/list/')
    else:
        # 返回校验错误信息
        return render(request, 'number_add.html', {'form': form})
复制代码

 

urls.py

    # 手机号
    path('number/list/', views.number_list),
    path('number/add/', views.number_add),

 

model.py

复制代码
class Number(models.Model):
    '''手机靓号'''
    mobile = models.CharField(max_length=11, verbose_name='手机号码')
    price = models.IntegerField(default=0, verbose_name='价格')

    ji_bie = {
        (1, '1级'),
        (2, '2级'),
        (3, '3级'),
    }
    ji = models.SmallIntegerField(choices=ji_bie, default=1, verbose_name='级别')

    zhuang_tai = {
        (1, '使用'),
        (2, '未使用'),
    }
    zhuang = models.SmallIntegerField(choices=zhuang_tai, default=2, verbose_name='状态')
复制代码

 

html 文件  number_add.html 文件代码 

 

复制代码
{% extends 'layout.html' %}

{% block content %}

        <div class="panel panel-default">
            <div class="panel-heading">  <span class="glyphicon glyphicon-th-list" aria-hidden="true"></span> ModelfORM新建靓号</div>
        </div>

        <form method="post" novalidate>
            {% csrf_token %}

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

              <button type="submit" class="btn btn-primary">提交</button>
        </form>
{% endblock%}
复制代码

 

html文件  number_list.html 列表页代码 

 

复制代码
{% extends 'layout.html' %}

{% block content %}

         <div style="margin-bottom: 10px;"> <a href="/number/add/" class="btn btn-success">
            <span class="glyphicon glyphicon-plus" aria-hidden="true"></span> 新增靓号 </a> </div>
        <div class="panel panel-default">
            <div class="panel-heading">  <span class="glyphicon glyphicon-th-list" aria-hidden="true"></span> 靓号列表</div>
            <table class="table table-bordered">
              <thead>
                <tr>
                    <th>ID</th>
                    <th>号码</th>

                    <th>价格</th>
                    <th>级别</th>
                    <th>状态</th>
                    <th>操作</th>
                </tr>
              </thead>
              <tbody>
              {% for item in number_lits %}
                <tr>
                    <th>{{ item.id }}</th>
                    <td>{{ item.mobile }}</td>
                    <td>{{ item.price }}</td>
                    <td>{{ item.get_ji_display }}</td>
                    <td>{{ item.get_zhuang_display }}</td>
                    <td>
                      <a href="/bumen/{{ item.id }}/edit" class="btn btn-primary btn-xs">编辑</a>
                      <a href="/bumen/delete/?nid={{ item.id }}" class="btn btn-danger btn-xs">删除</a>
                    </td>
                </tr>
              {% endfor %}
              </tbody>
            </table>
        </div>
{% endblock%}
复制代码

 

posted @   我在春天等伱  阅读(3518)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示