Django--数据管理系统

数据库操作:

cmd

mysql -u root -p

user sd;

show tables;

插入数据:

insert into app01_prettynum(mobile,price,level,status)values('12345678901',190,1,1);

select * from app01_prettynum;

python内对数据库的操作:

创建数据:

Import pymysql

While True,
User = input("用户名:")
If user.upper() == 'Q':
break
Pwd = input("密码:")
Mobile = input("手机号:") Conn = pymysql.connect(host="127.0.0.1", port=2206, user='root', passwd="123456", charset='utf8', db='unicom')
Cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) Sql = "insert into admin(user,password,mobile) values(%s,%s,%s)" Cursor.execute(sql,[user.pwd,mobile])
conn.commit() Cursor.close()
Conn.close

运行更新数据库、运行项目:

首先安装

pip install django

查看安装位置:

pip show django

建立、运行app01

python manage.py startapp app01

django-admin startup app01

创建数据库:

DATABASES={
'default':{
'ENGINE':'django.db.backends.mysql',
'NAME':'gzz',
'USER':'root',
'PASSWORD':'123',
'HOST':'127.0.0.1',
'PORT':'3306',
}
}

在setting.py内设置:

DATABASES={
'default':{
'ENGINE':'django.db.backends.mysql',
'NAME':'gzz',
'USER':'root',
'PASSWORD':'123',
'HOST':'127.0.0.1',
'PORT':'3306',
}
}

更新数据库、运行项目:

python manage.py makemigrations

python manage.py migrate

python manage.py r

网页代码继承:

model.PrettyNum.objects.filter(id=12)  #等于12

<!DOCTYPEhtml>
<htmllang="en">
<head>
<metacharset="UTF-8">
<title>Title</title>
</head>
<body> {% block content %} {% endblock %} </body>
</html>

继承模板:

{% extends'layout.html' %}

{% blockcontent %}

<h1>首页</h1>

{% endblock %}

·继承css\JS模板··

{% block css %}

{% endblock %}

框架内代码:

搭建数据库

class PrettyNum(models.Model):
"""靓号"""
mobile = models.CharField(verbose_name="手机号", max_length=11)
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)

靓号列表:

from django.core.validators import RegexValidator

from django.core.validators import ValidationError

class PrettyModelForm(forms.ModelForm):
mobile = forms.CharField(
label="手机号",
validators=[RegexValidator(r'^1[3-9]\d{9}$', '手机号格式错误')]
) class Meta:
model = models.PrettyNum
# fields = ["mobile",'price','level','status']
fields = "__all__" def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) for name, field in self.fields.items():
field.widget.attrs = {"class": "form-control rounded-3", "placeholder": field.label} def clean_mobile(self):
txt_mobile = self.cleaned_data["mobile"] exists = models.PrettyNum.objects.filter(mobile=txt_mobile).exists()
if exists:
raise ValidationError("手机号存在")
return txt_mobile

添加 pretty add

def pretty_add(request):
"""添加靓号"""
mobile = forms.CharField(
label="手机号",
validators=[RegexValidator(r'^1[3-9]\d{9}$', '手机号格式错误')]
) if request.method == "GET":
form = PrettyModelForm()
return render(request, 'pretty_add.html', {"form": form}) form = PrettyModelForm(data=request.POST)
if form.is_valid():
form.save()
return redirect('/pretty/list/')
else:
return render(request, 'pretty_add.html', {"form": form})

编辑 pretty edit

class PrettyEditModelForm(forms.ModelForm):
# 编写手机号不可编辑
# mobile = forms.CharField(disabled=True, label="手机号")
mobile = forms.CharField(
label="手机号",
validators=[RegexValidator(r'^1[3-9]\d{9}$', '手机号格式错误')]
) class Meta:
model = models.PrettyNum
fields = ['mobile', 'price', 'level', 'status'] def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) for name, field in self.fields.items():
field.widget.attrs = {"class": "form-control rounded-3", "placeholder": field.label} def clean_mobile(self):
txt_mobile = self.cleaned_data["mobile"] exists = models.PrettyNum.objects.exclude(id=self.instance.pk).filter(mobile=txt_mobile).exists()
if exists:
raise ValidationError("手机号存在")
return txt_mobile
def pretty_edit(request, nid):
row_object = models.PrettyNum.objects.filter(id=nid).first() if request.method == "GET":
# 根据ID获取数据库编辑的哪一行数据
form = PrettyModelForm(instance=row_object)
return render(request, 'pretty_edit.html', {'form': form}) form = PrettyEditModelForm(data=request.POST, instance=row_object) # 对当前行修改数据
if form.is_valid():
form.save()
return redirect('/pretty/list/')
return render(request, 'pretty_edit.html', {'form': form})

删除 pretty delete

def pretty_delete(request,nid):
models.PrettyNum.objects.filter(id=nid).delete()
return redirect('/pretty/list/')

手机号

正则表达式 :

    mobile = forms.CharField(
label="手机号",
validators=[RegexValidator(r'^1[3-9]\d{9}$', '手机号格式错误')]
)

html网页代码:

pretty list:

{% extends 'layout.html' %}

{% block content %}

<div class="container">
<div style="margin-bottom: 10px">
<a class="btn btn-success" href="/pretty/add/">新建靓号</a>
</div>
<table class="table table-striped table-sm">
<div class="panel-heading"><h5>靓号列表</h5></div>
<thead>
<tr>
<th scope="col">ID</th>
<th scope="col">号码</th>
<th scope="col">价格</th>
<th scope="col">级别</th>
<th scope="col">状态</th>
<th scope="col">操作</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="/pretty/{{ obj.id }}/edit/">编辑</a>
<a class="btn btn-danger btn-xs" href="/pretty/{{ obj.id }}/delete/">删除</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div> {% endblock %}

pretty add:

{% extends 'layout.html' %}

{% block content %}

<div class="modal modal-signin position-static d-block bg-secondary py-5" tabindex="-1" role="dialog" id="modalSignin">
<div class="modal-dialog" role="document">
<div class="modal-content rounded-4 shadow">
<div class="modal-header p-5 pb-4 border-bottom-0">
<!-- <h1 class="modal-title fs-5" >Modal title</h1> -->
<h1 class="fw-bold mb-0 fs-2">新建用户</h1>
</div> <div class="modal-body p-5 pt-0">
<form method="post">
{% csrf_token %}
<div class="form-floating mb-3">
<input type="text" class="form-control rounded-3" id="floatingInput" placeholder="姓名" name="user">
<label for="floatingInput">姓名</label>
</div> <div class="form-floating mb-3">
<input type="text" class="form-control rounded-3" id="floatingInput" placeholder="密码" name="pwd">
<label for="floatingInput">密码</label>
</div> <div class="form-floating mb-3">
<input type="text" class="form-control rounded-3" id="floatingInput" placeholder="年龄" name="age">
<label for="floatingInput">年龄</label>
</div> <div class="form-floating mb-3">
<input type="text" class="form-control rounded-3" id="floatingInput" placeholder="工资" name="ac">
<label for="floatingInput">工资</label>
</div> <div class="form-floating mb-3">
<input type="text" class="form-control rounded-3" id="floatingInput" placeholder="入职时间" name="ctime">
<label for="floatingInput">入职时间</label>
</div> <div class="form-floating mb-3">
<!-- <input type="text" class="form-control rounded-3" id="floatingInput" placeholder="性别" name="title">-->
<select name="gd" class="form-control">
{% for item in gender_choices %}
<option value="{{ item.0 }}">{{ item.1 }}</option>
{% endfor %}
</select>
</div> <div class="form-floating mb-3">
<!-- <input type="text" class="form-control rounded-3" id="floatingInput" placeholder="所属部门" name="title">-->
<select name="dp" class="form-control">
{% for item in depart_list %}
<option value="{{ item.id }}">{{ item.title }}</option>
{% endfor %}
</select>
</div>
<button class="w-100 mb-2 btn btn-lg rounded-3 btn-primary" type="submit">提交</button>
</form>
</div>
</div>
</div>
</div> {% endblock %}

pretty list

{% extends 'layout.html' %}

{% block content %}

<div class="modal modal-signin position-static d-block bg-secondary py-5" tabindex="-1" role="dialog" id="modalSignin">
<div class="modal-dialog" role="document">
<div class="modal-content rounded-4 shadow">
<div class="modal-header p-5 pb-4 border-bottom-0">
<!-- <h1 class="modal-title fs-5" >Modal title</h1> -->
<h1 class="fw-bold mb-0 fs-2">编辑靓号</h1>
</div> <div class="modal-body p-5 pt-0">
<form method="post" novalidate>
{% csrf_token %} {% for field in form %}
<div class="form-group mb-3">
<label>{{ field.label }}</label>{{ field }}
<span class="form-group mb-1" style="font-size:12px;color:red">{{ field.errors.0 }}</span>
</div> {% endfor %}
<button class="w-100 mb-2 btn btn-lg rounded-3 btn-primary" type="submit">提交</button>
</form>
</div>
</div>
</div>
</div> {% endblock %}

layout

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="https://cdn.staticfile.net/twitter-bootstrap/5.1.1/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<div class="d-flex flex-wrap align-items-center justify-content-center justify-content-lg-start">
<a href="/" class="d-flex align-items-center mb-2 mb-lg-0 text-white text-decoration-none">
<svg class="bi me-2" width="40" height="32" role="img" aria-label="Bootstrap">
<use xlink:href="#bootstrap"></use>
</svg>
</a> <ul class="nav col-12 col-lg-auto me-lg-auto mb-2 justify-content-center mb-md-0">
<li><a href="#" class="nav-link px-2 text-secondary">联通用户管理</a></li>
<li><a href="/depart/list/" class="nav-link px-2 text-secondary">部门管理</a></li>
<li><a href="/user/list/" class="nav-link px-2 text-secondary">用户管理</a></li>
<li><a href="/pretty/list/" class="nav-link px-2 text-secondary">靓号管理</a></li> </ul> <form class="col-12 col-lg-auto mb-3 mb-lg-0 me-lg-3" role="search">
<input type="search" class="form-control form-control-dark text-bg-dark" placeholder="Search..."
aria-label="Search">
</form> <div class="text-end">
<button type="button" class="btn btn-outline-dark me-2">登录</button>
<button type="button" class="btn btn-warning">高治中</button>
</div>
</div>
</div> <div> {% block content %}
{% endblock %} </div> <script src="https://cdn.staticfile.net/jquery/1.10.2/jquery.min.js">
</script>
<script src="https://cdn.staticfile.net/twitter-bootstrap/5.1.1/js/bootstrap.min.js"></script>
</body>
</html>

Django--数据管理系统的更多相关文章

  1. Django 数据表更改

    Django 数据表更改 « Django 开发内容管理系统(第四天) Django 后台 » 我们设计数据库的时候,早期设计完后,后期会发现不完善,要对数据表进行更改,这时候就要用到本节的知识. D ...

  2. django后台管理系统(admin)的简单使用

    目录 django后台管理系统的使用 检查配置文件 检查根urls.py文件 启动项目,浏览器输入ip端口/admin 如: 127.0.0.1/8000/admin 回车 注册后台管理系统超级管理 ...

  3. Django后台管理系统的使用

    目录 django后台管理系统的使用 检查配置文件 检查根urls.py文件 启动项目,浏览器输入ip端口/admin 如: 127.0.0.1/8000/admin 回车 注册后台管理系统超级管理 ...

  4. Django数据操作F和Q、model多对多操作、Django中间件、信号、读数据库里的数据实现分页

    models.tb.objects.all().using('default'),根据using来指定在哪个库里查询,default是settings中配置的数据库的连接名称. 外话:django中引 ...

  5. Laxcus大数据管理系统单机集群版

    Laxcus大数据管理系统是我们Laxcus大数据实验室历时5年,全体系全功能设计研发的大数据产品,目前的最新版本是2.1版本.从三年前的1.0版本开始,Laxcus大数据系统投入到多个大数据和云计算 ...

  6. Laxcus大数据管理系统2.0(5)- 第二章 数据组织

    第二章 数据组织 在数据的组织结构设计上,Laxcus严格遵循数据和数据描述分离的原则,这个理念与关系数据库完全一致.在此基础上,为了保证大规模数据存取和计算的需要,我们设计了大量新的数据处理技术.同 ...

  7. 三分钟部署Laxcus大数据管理系统

    Laxcus是Laxcus大数据实验室历时五年,全体系自主设计研发的国内首套大数据管理系统.能够支撑百万台级计算机节点,提供EB量级存储和计算能力,兼容SQL和关系数据库.最新的2.x版本已经实现对当 ...

  8. Laxcus大数据管理系统2.0(14)- 后记

    后记 Laxcus最早源于一个失败的搜索引擎项目,项目最后虽然终止了,但是项目中的部分技术,包括FIXP协议.Diffuse/Converge算法.以及很多新的数据处理理念却得以保留下来,这些成为后来 ...

  9. Laxcus大数据管理系统2.0(9)- 第七章 分布任务组件

    第七章 分布任务组件 Laxcus 2.0版本的分布任务组件,是在1.x版本的基础上,重新整合中间件和分布计算技术,按照新增加的功能,设计的一套新的.分布状态下运行的数据计算组件和数据构建组件,以及依 ...

  10. Laxcus大数据管理系统2.0(10)- 第八章 安全

    第八章 安全 由于安全问题对大数据系统乃至当前社会的重要性,我们在Laxcus 2.0版本实现了全体系的安全管理策略.同时我们也考虑到系统的不同环节对安全管理的需求是不一样的,所以有选择地做了不同的安 ...

随机推荐

  1. php 根据时间设置多少小时 ,前天,昨天,多少月,多少年

    public static function formatTime($time){ if (is_int($time)) { $time = intval($time); } elseif ($tim ...

  2. Dubbo实战:四步实现注册中心平滑迁移原创

      写在前面 如题,这是一个真实存在的业务场景.在微服务体系的迭代过程中,会存在注册中心的切换,典型如从zookeeper迁移到nacos. 最近面试中,经常会用该场景来考察候选人(涉及RPC.分布式 ...

  3. Android启动页正确的打开姿势

    在App启动的时候需要加载一些东西,期间我们的App会是一片空白,强迫症,没办法---加个启动页吧!!! 1.首先写一个Activity,不需要写布局文件 public class SplashAct ...

  4. 通用的servlet

    1 通用的servlet实现的原理 2 实例 2.1 目录结构 2.2 BaseServlet.java 2.3 ServletDemo.java 2.4 index.html 2.5 test.ht ...

  5. 物联网之对接MQTT最佳实践

    小伙伴们,你们好呀,我是老寇,跟我一起学习对接MQTT 安装EMQX 采用docker-compose一键式启动!!! 还没有安装docker朋友,参考文章下面两篇文章 # Ubuntu20.04安装 ...

  6. 操作系统:设备I/O -- 如何在内核中注册设备?

    在上节课里,我们对设备进行了分类,建立了设备与驱动的数据结构,同时也规定了一个驱动程序应该提供哪些标准操作方法,供操作系统内核调用.这相当于设计了行政部门的规章制度,一个部门叫什么,应该干什么,这些就 ...

  7. Go语言flag包:命令行解析

    转载:http://c.biancheng.net/view/5573.html 在编写命令行程序(工具.server)时,需要对命令行参数进行解析,各种编程语言一般都会提供解析命令行参数的方法或库, ...

  8. E - Stamp

    题目链接 : E - Stamp (atcoder.jp) 题意:给定长为n的s串,m的t串,和一个长度为n的x串,问你能否操作任意次数的操作, 每次操作都可以使x中长度为m的存在串变为t,最后使得变 ...

  9. RC4加密解密算法工具类-Java语言实现

    摘要 RC4加密解密算法是工具类是大名鼎鼎的 RSA三人组中的头号人物Ron Rivest设计的,可以有效抵御暴力搜索密钥的攻击.鉴于此,提供一个由Java语言实现的工具类. 前言   RC4加密算法 ...

  10. 卡掉hash的方法

    大质数hash 通常,这个质数会选择在 \(10^9\) 附近,如 \(998244353\),\(10^9+7\). 考虑生日碰撞,欲达到 50% 成功率,需要尝试的次数为 \[\begin{ali ...