手机号码 - 正则表达式的校验方法
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%}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具