django电话号码新增

本文介绍如何在Django项目中新增电话号码字段,包括模型设计、表单验证及模板展示,确保用户能正确输入并保存电话号码数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

```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/')

```

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值