Django学习3——靓号管理

目录

靓号管理

表结构和数据

根据表结构的需求,在models.py中创建类(由类生成数据库中的表) 

在数据库生成表 

自己在数据模拟创建一些数据:

靓号列表

新建靓号

编辑靓号

删除靓号 

搜索靓号



靓号管理

表结构和数据

Django学习3——靓号管理_第1张图片

根据表结构的需求,在models.py中创建类(由类生成数据库中的表) 

class PrettyNum(models.Model):
    """ 靓号表 """
    mobile = models.CharField(verbose_name="手机号", max_length=11)
    # 想要允许为空 null=True, blank=True
    price = models.IntegerField(verbose_name="价格", default=0)

    level_choices = (
        # 写成这样是为了让数据库存储数字,但是页面显示对应的等级
        (1, "1级"),
        (2, "2级"),
        (3, "3级"),
        (4, "4级"),
    )
    level = models.SmallIntegerField(verbose_name="级别", choices=level_choices, default=1)

    status_choices = (
        (1, "已占用"),
        (2, "未使用")
    )
    status = models.SmallIntegerField(verbose_name="状态", choices=status_choices, default=2)

在数据库生成表 

Django学习3——靓号管理_第2张图片

自己在数据模拟创建一些数据:

Django学习3——靓号管理_第3张图片

靓号列表


Django学习3——靓号管理_第4张图片

Django学习3——靓号管理_第5张图片

 Django学习3——靓号管理_第6张图片

pretty_list.html

{% extends 'layout.html' %}

{% block content %}
    
靓号列表
{% for obj in queryset %} {% endfor %}
ID 号码 价格 级别 状态 操作
{{ obj.id }} {{ obj.mobile }} {{ obj.price}} {{ obj.get_level_display }} {{ obj.get_status_display }} 编辑 删除
    {{ page_string }}
{% endblock %}

新建靓号

Django学习3——靓号管理_第7张图片


 pretty_add.html

{% extends 'layout.html' %}

{% block content %}
    

新建靓号

{# 不加action,表示提交到当前地址#} {# novalidate不让浏览器校验#}
{% csrf_token %} {% for field in form %}
{{ field }} {# 错误信息,是一个列表[错误1,错误2]#} {{ field.errors.0 }}
{% endfor %}
{% endblock %}

对用户提交进行校验的两种方式(字段+正则和钩子方法)

编辑靓号

Django学习3——靓号管理_第8张图片

Django学习3——靓号管理_第9张图片 pretty_edit.html

{% extends 'layout.html' %}

{% block content %}
    

新建用户

{# 不加action,表示提交到当前地址#} {# novalidate不让浏览器校验#}
{% csrf_token %} {% for field in form %}
{{ field }} {# 错误信息,是一个列表[错误1,错误2]#} {{ field.errors.0 }}
{% endfor %}
{% endblock %}

Django学习3——靓号管理_第10张图片 Django学习3——靓号管理_第11张图片

删除靓号 

Django学习3——靓号管理_第12张图片

搜索靓号

```python
models.PrettyNum.objects.filter(id=12)       # 等于12
models.PrettyNum.objects.filter(id__gt=12)   # 大于12
models.PrettyNum.objects.filter(id__gte=12)  # 大于等于12
models.PrettyNum.objects.filter(id__lt=12)   # 小于12
models.PrettyNum.objects.filter(id__lte=12)  # 小于等于12

data_dict = {"id__lte":12}
models.PrettyNum.objects.filter(**data_dict)
```

```python
models.PrettyNum.objects.filter(mobile="999")               # 等于
models.PrettyNum.objects.filter(mobile__startswith="1999")  # 筛选出以1999开头
models.PrettyNum.objects.filter(mobile__endswith="999")     # 筛选出以999结尾
models.PrettyNum.objects.filter(mobile__contains="999")     # 筛选出包含999

data_dict = {"mobile__contains":"999"}
models.PrettyNum.objects.filter(**data_dict)
```

 如果输入了关键字,就往字典中写入一个词,根据关键字去搜索。如果value没有值相当于data_dict相当是一个空字典,就返回所有的Django学习3——靓号管理_第13张图片

 Django学习3——靓号管理_第14张图片

接下来要解决的是:url上边这个条件应该如何构造?不应该有我们手动输,应该页面有个框,通过点击提交实现,如下图所示:

Django学习3——靓号管理_第15张图片

Django学习3——靓号管理_第16张图片

最终实现:

Django学习3——靓号管理_第17张图片

分页

Django学习3——靓号管理_第18张图片

但是考虑到页面不止有5个,得根据数据库有多少数据来算,所以页码如图所示放是有问题的。所以可以把页面放在后台生成,然后传到前端页面。

Django学习3——靓号管理_第19张图片

 Django学习3——靓号管理_第20张图片

分页组件的封装 

优化——时间选择组件

Django学习3——靓号管理_第21张图片 把组件直接复制到相应位置

 在user_add页面使用 

在母版中预留自定义css和js的位置

Django学习3——靓号管理_第22张图片Django学习3——靓号管理_第23张图片

Django学习3——靓号管理_第24张图片 实现效果

在user_model_form_add中使用 

Django学习3——靓号管理_第25张图片Django学习3——靓号管理_第26张图片

优化——BootStrap样式父类 

你可能感兴趣的:(Diango学习,学习)