手机号码 - 正则表达式的校验方法
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%}

浙公网安备 33010602011771号