Django--数据管理系统
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--数据管理系统的更多相关文章
- Django 数据表更改
Django 数据表更改 « Django 开发内容管理系统(第四天) Django 后台 » 我们设计数据库的时候,早期设计完后,后期会发现不完善,要对数据表进行更改,这时候就要用到本节的知识. D ...
- django后台管理系统(admin)的简单使用
目录 django后台管理系统的使用 检查配置文件 检查根urls.py文件 启动项目,浏览器输入ip端口/admin 如: 127.0.0.1/8000/admin 回车 注册后台管理系统超级管理 ...
- Django后台管理系统的使用
目录 django后台管理系统的使用 检查配置文件 检查根urls.py文件 启动项目,浏览器输入ip端口/admin 如: 127.0.0.1/8000/admin 回车 注册后台管理系统超级管理 ...
- Django数据操作F和Q、model多对多操作、Django中间件、信号、读数据库里的数据实现分页
models.tb.objects.all().using('default'),根据using来指定在哪个库里查询,default是settings中配置的数据库的连接名称. 外话:django中引 ...
- Laxcus大数据管理系统单机集群版
Laxcus大数据管理系统是我们Laxcus大数据实验室历时5年,全体系全功能设计研发的大数据产品,目前的最新版本是2.1版本.从三年前的1.0版本开始,Laxcus大数据系统投入到多个大数据和云计算 ...
- Laxcus大数据管理系统2.0(5)- 第二章 数据组织
第二章 数据组织 在数据的组织结构设计上,Laxcus严格遵循数据和数据描述分离的原则,这个理念与关系数据库完全一致.在此基础上,为了保证大规模数据存取和计算的需要,我们设计了大量新的数据处理技术.同 ...
- 三分钟部署Laxcus大数据管理系统
Laxcus是Laxcus大数据实验室历时五年,全体系自主设计研发的国内首套大数据管理系统.能够支撑百万台级计算机节点,提供EB量级存储和计算能力,兼容SQL和关系数据库.最新的2.x版本已经实现对当 ...
- Laxcus大数据管理系统2.0(14)- 后记
后记 Laxcus最早源于一个失败的搜索引擎项目,项目最后虽然终止了,但是项目中的部分技术,包括FIXP协议.Diffuse/Converge算法.以及很多新的数据处理理念却得以保留下来,这些成为后来 ...
- Laxcus大数据管理系统2.0(9)- 第七章 分布任务组件
第七章 分布任务组件 Laxcus 2.0版本的分布任务组件,是在1.x版本的基础上,重新整合中间件和分布计算技术,按照新增加的功能,设计的一套新的.分布状态下运行的数据计算组件和数据构建组件,以及依 ...
- Laxcus大数据管理系统2.0(10)- 第八章 安全
第八章 安全 由于安全问题对大数据系统乃至当前社会的重要性,我们在Laxcus 2.0版本实现了全体系的安全管理策略.同时我们也考虑到系统的不同环节对安全管理的需求是不一样的,所以有选择地做了不同的安 ...
随机推荐
- php 根据时间设置多少小时 ,前天,昨天,多少月,多少年
public static function formatTime($time){ if (is_int($time)) { $time = intval($time); } elseif ($tim ...
- Dubbo实战:四步实现注册中心平滑迁移原创
写在前面 如题,这是一个真实存在的业务场景.在微服务体系的迭代过程中,会存在注册中心的切换,典型如从zookeeper迁移到nacos. 最近面试中,经常会用该场景来考察候选人(涉及RPC.分布式 ...
- Android启动页正确的打开姿势
在App启动的时候需要加载一些东西,期间我们的App会是一片空白,强迫症,没办法---加个启动页吧!!! 1.首先写一个Activity,不需要写布局文件 public class SplashAct ...
- 通用的servlet
1 通用的servlet实现的原理 2 实例 2.1 目录结构 2.2 BaseServlet.java 2.3 ServletDemo.java 2.4 index.html 2.5 test.ht ...
- 物联网之对接MQTT最佳实践
小伙伴们,你们好呀,我是老寇,跟我一起学习对接MQTT 安装EMQX 采用docker-compose一键式启动!!! 还没有安装docker朋友,参考文章下面两篇文章 # Ubuntu20.04安装 ...
- 操作系统:设备I/O -- 如何在内核中注册设备?
在上节课里,我们对设备进行了分类,建立了设备与驱动的数据结构,同时也规定了一个驱动程序应该提供哪些标准操作方法,供操作系统内核调用.这相当于设计了行政部门的规章制度,一个部门叫什么,应该干什么,这些就 ...
- Go语言flag包:命令行解析
转载:http://c.biancheng.net/view/5573.html 在编写命令行程序(工具.server)时,需要对命令行参数进行解析,各种编程语言一般都会提供解析命令行参数的方法或库, ...
- E - Stamp
题目链接 : E - Stamp (atcoder.jp) 题意:给定长为n的s串,m的t串,和一个长度为n的x串,问你能否操作任意次数的操作, 每次操作都可以使x中长度为m的存在串变为t,最后使得变 ...
- RC4加密解密算法工具类-Java语言实现
摘要 RC4加密解密算法是工具类是大名鼎鼎的 RSA三人组中的头号人物Ron Rivest设计的,可以有效抵御暴力搜索密钥的攻击.鉴于此,提供一个由Java语言实现的工具类. 前言 RC4加密算法 ...
- 卡掉hash的方法
大质数hash 通常,这个质数会选择在 \(10^9\) 附近,如 \(998244353\),\(10^9+7\). 考虑生日碰撞,欲达到 50% 成功率,需要尝试的次数为 \[\begin{ali ...