```python
#urls板块
from django.contrib import admin
from django.urls import path
from app01 import views
urlpatterns = [
path('/admin/', admin.site.urls),
path('phone/num/list/', views.phone_num_list),
path('phone/num/add/', views.phone_num_add),
#电话号码归属地查询
# path('/phone/num/check/', views.phone_num_check),
# #号码信息编辑
path('phone/<int:nid>/edit/', views.phone_num_edit),
path('phone/delete/', views.phone_delete),
]
```
settings板块
```python
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'day17',
'HOST':'127.0.0.1',
'PORT':3306,
'user':'root',
'PASSWORD':'。。。。。',
'CHARSET':'utf8'
}
}
```
models板块
```python
from django.db import models
# Create your models here.
class PhoneNumber(models.Model):
moble=models.CharField(max_length=11,verbose_name="手机号码")
price=models.DecimalField(verbose_name="价格",decimal_places=2,max_digits=5,default=0)
level_chioce=(
(1,'优秀'),
(2, '好'),
(3, '一般'),
(4, '免费')
)
level=models.SmallIntegerField(verbose_name='靓号级别',choices=level_chioce,default=1)
status_chioce=(
(1, '已使用'),
(2, '未使用')
)
status = models.SmallIntegerField(verbose_name='状态', choices=status_chioce,default=1)
```
mysql板块验证表头是否做成功
```python
mysql -u root -p
create day17;
use day17;
show tables;
desc 表头
```
公共表头制作
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu" crossorigin="anonymous">
<!-- 可选的 Bootstrap 主题文件(一般不用引入) -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap-theme.min.css" integrity="sha384-6pzBo3FDv/PJ8r2KRkGHifhEocL+1X2rVCTTkUfGk7/0pbek5mMa1upzvWbrUbOZ" crossorigin="anonymous">
<style>
.navbar{
border-radius: 0;
}
</style>
</head>
<body>
<nav class="navbar navbar-default">
<div class="container">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/phone/num/list/">电话号码管理系统</a>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
<li class="active"><a href="/phone/num/list/">电话号码列表</a></li>
<li><a href="/phone/num/check/">归属地查询</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">龚莲 <span class="caret"></span></a>
<ul class="dropdown-menu">
{# <li><a href="#">个人权限</a></li>#}
<li><a href="#">我的信息</a></li>
<li role="separator" class="divider"></li>
<li><a href="#">注销</a></li>
</ul>
</li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li><a href="#">Link</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="#">Action</a></li>
<li><a href="#">Another action</a></li>
<li><a href="#">Something else here</a></li>
<li role="separator" class="divider"></li>
<li><a href="#">Separated link</a></li>
</ul>
</li>
</ul>
</div><!-- /.navbar-collapse -->
</div><!-- /.container-fluid -->
</nav>
<div>
{% block content %}
{% endblock %}
</div>
{#<!-- 最新的 Bootstrap 核心 JavaScript 文件 -->#}
<script src="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha384-aJ21OjlMXNL5UyIl/XNwTMqvzeRMZH2w8c5cRVpzpU8Y5bApTppSuUkhZXN0VxHd" crossorigin="anonymous"></script>
</body>
</html>
```
views板块
```python
from django.shortcuts import render, redirect
from app01 import models
from django import forms
# Create your views here.
def phone_num_list(request):
#按照level级别高的排序
queryset = models.PhoneNumber.objects.all().order_by("level")
return render(request, 'phone_num_list.html', {'quryset': queryset})
class numModelFormadd(forms.ModelForm):
class Meta:
model=models.PhoneNumber
fields="__all__"
def __init__(self,*args,**kwargs):
super().__init__(*args,**kwargs)
#循环找到所有的插件,添加class={"class":"form-control"}
def phone_num_add(request):
if request.method=="GET":
form=numModelFormadd()
return render(request,'phone_num_add.htm.html',{"form":form})
"""使用post提交数据,数据校验"""
form = numModelFormadd(data=request.POST)
if form.is_valid():
# 如果数据合法,保存到数据库
# print(form.cleaned_data)
form.save()
return redirect("/phone/num/list/")
else: # 校验失败,在页面显示错误信息
print(form.errors)
def phone_num_edit(request,nid):
row_obj = models.PhoneNumber.objects.filter(id=nid).first()
#根据id,获取要编辑的哪一行数据
if request.method=="GET":
form=numModelFormadd(instance=row_obj)
return render(request,'phone_num_edit.html',{"form":form})
form=numModelFormadd(data=request.POST,instance=row_obj)
"""使用post提交数据,数据校验"""
if form.is_valid():
# 如果数据合法,保存到数据库
# print(form.cleaned_data)
form.save()
return redirect("/phone/num/list/")
# 校验失败,在页面显示错误信息
return render(request, 'phone_num_edit.html', {"form": form})
def phone_delete(request):
id=request.GET.get('id')
models.PhoneNumber.objects.filter(id=id).delete()
return redirect('/phone/num/list/')
```