python-web应用程序-Django数据库-数据库表设计
在models中创建一个类会自动对数据库进行管理,那么如何用类的声明来实现数据库表的设计呢?
python
from django.db import models
# Create your models here.
class Department(models.Model):
title = models.CharField(verbose_name='部门名称',max_length=20)
class UserInfo(models.Model):
name = models.CharField(verbose_name='姓名',max_length=10)
password = models.CharField(verbose_name='密码',max_length=20)
age = models.IntegerField(verbose_name='年龄')
account = models.DecimalField(verbose_name='账户余额',max_digits=10,decimal_places=2,default=0)
crate_time = models.DateTimeField(verbose_name="入职时间")
#无约束
depart_id = models.BigIntegerField(verbose_name='部门id')
"""1.有约束
- to ,与那张表关联
- to_field ,表中的那一字段关联
2.Django自动
- 写的dapart
- 生成数据列 depart_id
3.部门表被删除时
- 级联删除
dapart = models.ForeignKey(to='Department',to_field='id',on_delete=models.CASCADE)
- 置空
dapart = models.ForeignKey(to='Department',to_field='id',null=True,blank=True,on_delete=models.SET_NULL)
以上均是在数据库中的约束
"""
dapart = models.ForeignKey(to='Department',to_field='id',null=True,blank=True,on_delete=models.SET_NULL)
#在django中做出约束
gender_choices = (
(1,'男'),
(2,'女')
)
gender = models.SmallIntegerField(verbose_name='性别',choices=gender_choices)
Django连接数据库
1.创建数据库
create database pymysql DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
2.在Django中配置数据库
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'pymysql', #数据库名称
'USER':'root',
'PASSWORD':'123456',
'HOST':'127.0.0.1',
'PORT':'3306'
}
}
3.根据models中的类自动生成表结构命令
python manage.py makemigrations
python manage.py migrate
也可点击-tools - run manage.py TASK
makemigrations
migrate
部门管理
用最原始的方法做
后续使用Django中提供的Form和ModelForm组件更方便
1.参数传递
前端:
py
href="/depart/{{ obj.id }}/edit/
urls.py中:
path('depart/<int:nid>/edit/',views.depart_edit)
#<int:nid>:正则表达式,相当于占位符,该位置传递的是nid 的参数。
view.py中
python
def depart_edit(request,nid):
'''部门'''
#根据nid,获取他的数据[obj,]
row_object = models.Department.objects.filter(id=nid).first()
return render(request,'depart_edit.htnl',{"row_object": row_object})
2.模版的继承
对于前端高度重复的部分,可以使用模版继承将不变的继承下来,变化的重写即可
-
创建一个前端模版layout.html
-
在需要变化的地方加上
{% block content %} {% endblock %}
-
使用模版,创建一个test.html
{% extends 'layout.html' %} {% block content %} {% endblock %}
layout.html:
html<! DOCTYPE html><html lang="en "><head> <meta charset="UTF-8"><title>Title</title></ head> {% block css %} {% endblock % } <body> <h1>标题</h1> <div> {% block content %} {% endblock % } </div> <h1>底部</h1></ body> {% block js %} {% endblock % } </ htm1>
继承模版
{% extends 'layout.html' %} {% block css %} XXXXXX {% endblock % } {% block content %} XXXXXXX {% endblock %} {% block js %} XXXXXXXX {% endblock % }