Django(七)

1.靓号管理

1.1 表结构

Django(七)_第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)

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

insert into app01_prettynum(mobile,price,level,status)values("111111111",19,1,1);

1.2 靓号列表

  • URL
  • 函数
    • 获取所有靓号
    • 结合HTML+render将靓号罗列出来
      id	号码	价格	级别(中文)	状态(中文)
      

在这里插入图片描述
Django(七)_第2张图片

pretty_list.html

{% extends 'layout.html' %}
{% block content %}
    <div class="container">
        <div style="margin-bottom: 10px">
            <a class="btn btn-success" href="#">
                <span class="glyphicon glyphicon-plus-sign" 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>IDth>
                    <th>号码th>
                    <th>价格th>
                    <th>级别th>
                    <th>状态th>
                    <th>操作th>
                tr>
                thead>
                <tbody>
                {% for obj in queryset %}
                    <tr>
                        <th>{{ obj.id }}th>
                        <td>{{ obj.mobile }}td>
                        <td>{{ obj.price }}td>
                        <td>{{ obj.get_level_display }}td>
                        <td>{{ obj.get_status_display}}td>
                        <td>
                            <a class="btn btn-primary btn-xs" href="#">编辑a>
                            <a class="btn btn-danger btn-xs" href="#">删除a>
                        td>

                    tr>
                {% endfor %}
                tbody>
            table>
        div>
    div>
{% endblock %}

layout.html里面添加如下图
Django(七)_第3张图片

1.3 新建靓号

  • 列表页面跳转:/pretty/add/

  • URL

  • ModelForm类

    from django import forms
    
    class PrettyModelForm(forms.ModelForm):
    	...
    
  • 函数

    • 实例化类的对象
    • 通过render将对象传入到HTML中。
    • 模板的循环展示所有的字段。
      Django(七)_第4张图片
      Django(七)_第5张图片
      Django(七)_第6张图片
{% extends 'layout.html' %}
{% block content %}
    <div class="container">
        <div class="panel panel-default">
            <div class="panel-heading">
                <h3 class="panel-title"><span style="font-weight:bold;">新建靓号span>h3>
            div>
            <div class="panel-body">
                <form method="post" novalidate>		 # 如果没写novalidate浏览器会做校验
                    {% csrf_token %}
                    {% for field in form %}
                        <div class="form-group">
                            <labe><span style="font-weight:bold;">{{ field.label }}span>labe>
                            {{ field }}
                            <span style="color: red">{{ field.errors.0 }}span>
                        div>
                    {% endfor %}
                    <button type="submit" class="btn btn-primary">提交button>
                form>
            div>
        div>
    div>
{% endblock %}

Django(七)_第7张图片

  • 点击提交
    • 数据校验
    • 保存到数据库
    • 跳转回靓号列表
      Django(七)_第8张图片
      Django(七)_第9张图片
      Django(七)_第10张图片
      可以为空,输入也能提交但是这样需要格式校验(手机号11位)
      Django(七)_第11张图片

Django(七)_第12张图片
Django(七)_第13张图片

1.4 编辑靓号

Django(七)_第14张图片

  • 列表页面:`/pretty/数字/edit/
  • URL
  • 函数
    • 根据ID获取当前编辑的对象
    • ModelForm配合,默认显示数据。
    • 提交修改。

Django(七)_第15张图片
Django(七)_第16张图片
Django(七)_第17张图片
Django(七)_第18张图片
不允许手机号重复

  • 添加:【正则表达式】【手机号不能存在】
# [obj,obj,obj] 对象
queryset = models.PrettyNum.objects.filter(mobile="1888888888")

obj = models.PrettyNum.objects.filter(mobile="1888888888").first()

# True/False
exists = models.PrettyNum.objects.filter(mobile="1888888888").exists()	# 钩子方法里面操作
  • 编辑:【正则表达式】【手机号不能存在】
排除自己以外,其他的数据是否手机号是否重复?

# id!=2 and mobile='1888888888'
models.PrettyNum.objects.filter(mobile="1888888888").exclude(id=2)

Django(七)_第19张图片

Django(七)_第20张图片

1.5 删除靓号

Django(七)_第21张图片
在这里插入图片描述
Django(七)_第22张图片
Django(七)_第23张图片
Django(七)_第24张图片

你可能感兴趣的:(django,python,mysql)