
生成app应用
在命令行中输入：python manage.py startapp app_name

将app加入到setting中
# 已安装的应用程序
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app_name',
]

-----------------------------------------------------------------
配置Mysql数据库

# 设置mysql
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': "django_test",                 # 数据库名称
        'USER':"root",
        "PASSWORD":"xsj26875676",
        "HOST":"localhost",
        "PORT":"3306"
    }
}


须在__init__.py中加入pymysql库


import pymysql

pymysql.install_as_MySQLdb()

-----------------------------------------------------------------

数据库迁移到本地Mysql

在命令行中输入：python manage.py makemigrations

在命令行中输入：python manage.py migrate


-----------------------------------------------------------------

进入shell
命令行输入：python manage.py shell

In [1]: from Myapp.models import Grades,Students

In [2]: from django.utils import timezone

In [3]: from datetime import *

# 增加Grades表中一条数据


grade1 = Grades()
grade1.gname="test1"
grade1.gdate=datetime(year=2019,month=6,day=3)
grade1.ggirlnum=3
grade1.gboynum=47
grade1.save()

-----------------------------------------------------------------
# 查询数据库


# 查询Grades表中所有字段

格式：表名.objects.all()
Grades.objects.all()

# 查询Grades表中id=2的字段
Grades.objects.get(pk=2)


格式：表名.objects.first()  # 查询第一个
格式：表名.objects.last()   # 查询最后一个
格式：表名.objects.count()  # 查询个数
格式：表名.objects.exists() # 查询存在

-----------------------------------------------------------------
# 修改数据库

#得到已经创建id=2的数据

g = Grades.objects.get(pk=2)  

#修改gname

g.gname="c_class"

#保存修改

g.save()

-----------------------------------------------------------------

# 删除数据

#得到已经创建id=2的数据

g = Grades.objects.get(pk=2)  


#删除数据

g.delete()

-----------------------------------------------------------------






#---------|

models.py |

#-------- |

from django.db import models

# Create your models here.



class Grades(models.Model):
    gname = models.CharField(max_length=20)
    gdate = models.DateField()
    ggirlnum = models.IntegerField()
    gboynum = models.IntegerField()
    isDelete = models.BooleanField(default=False)
    def __str__(self):
        return "gname=%s" % self.gname       #执行Grades.objects.all()查询的时候会显示gname=self.gname


class Students(models.Model):
    sname = models.CharField(max_length=20)
    sgender = models.BooleanField(default=True)          #性别
    sage = models.IntegerField()
    scontend = models.CharField(max_length=20)
    isDelete = models.BooleanField(default=False)
    # 关联外键
    sgrade = models.ForeignKey("Grades",on_delete=models.CASCADE)
    def __str__(self):
        return "sname=%s" % self.sname        #执行Students.objects.all()查询的时候会显示sname=self.sname



-----------------------------------------------------------------


# 关联数据库查询

grade = Grades.objects.get(pk=1)

# 查询sgrade_id=1的student

格式：grade.关联表名_set.all()

grade.students_set.all()

-----------------------------------------------------------------
# 关联数据库创建数据

grade = Grades.objects.get(pk=1)

格式：grade.关联表名_set.create(字段=值)
grade.students_set.create(sname="张老三",sgender=False,sage=45,scontend="我是张老三")


-----------------------------------------------------------------

# 创建超级用户

python manage.py createsuperuser

username:
email:
password:
password_again:


-----------------------------------------------------------------

# 将数据库中的数据注册到Django自带的后台管理

#---------|

admin.py  |

#-------- |


from django.contrib import admin
from .models import Grades,Students
# Register your models here.


admin.site.register(Grades)
admin.site.register(Students)

-----------------------------------------------------------------

#---------|

admin.py  |

#-------- |

# 定义显示字段

from django.contrib import admin
from .models import Grades,Students

class GradesAdmin(admin.ModelAdmin):

    # 列表页属性
    list_display = ["pk","gname","gdate","ggirlnum","gboynum","isDelete"] # 自定义字段显示
    list_filter = ["gname"]              # 添加过滤器
    search_fields = ["gname"]            # 添加搜索框
    # list_per_page = 1                  # 每页显示一条数据

    # 添加、修改页
    # fields = ["ggirlnum","gboynum","gname","gdate","isDelete"]  # 在添加数据时的字段的顺序
    # fieldsets = [
        ("num",{"fields":["ggirlnum","gboynum"]}),
        ("base",{"fields":["gname","gdate","isDelete"]}),         # 在添加数据时分组字段
    ]


admin.site.register(Grades,GradesAdmin)
admin.site.register(Students)



-----------------------------------------------------------------


#---------|

admin.py  |

#-------- |

from django.contrib import admin
from .models import Grades,Students
# Register your models here.



class StudentsInfo(admin.TabularInline):  # 在添加数据时，定义附带2个学生的model
    model = Students
    extra = 2

@admin.register(Grades)
class GradesAdmin(admin.ModelAdmin):
    inlines = [StudentsInfo]              # 将定义的两个学生字段注册到添加机制中
    # 列表页属性
    list_display = ["pk","gname","gdate","ggirlnum","gboynum","isDelete"]
    list_filter = ["gname"]
    search_fields = ["gname"]
    list_per_page = 1

    # 添加、修改页
    # fields = ["ggirlnum","gboynum","gname","gdate","isDelete"]
    fieldsets = [
        ("num",{"fields":["ggirlnum","gboynum"]}),
        ("base",{"fields":["gname","gdate","isDelete"]}),
    ]

@admin.register(Students)
class StudentsAdmin(admin.ModelAdmin):

    # 将执行框放在下面
    actions_on_bottom = True
    actions_on_top = False
    # 列表页属性
    list_display = ["pk","sname","sage","gender","scontend","sgrade","isDelete"]
    list_filter = ["sname"]
    search_fields = ["sname"]
    list_per_page = 2

    # 添加、修改页
    # fields = []
    fieldsets = [
        ("other",{"fields":["scontend","sgrade"]}),
        ("base",{"fields":["sname","sage","sgender","isDelete"]}),
    ]

# admin.site.register(Grades,GradesAdmin)     # 省略这两句，用装饰器来代替@admin.register
# admin.site.register(Students,StudentsAdmin)

-----------------------------------------------------------------

# 若想增加一张表

直接在models.py中定义好
然后在命令行输入：python manage.py makemigrations
                python manage.py migrate

即可添加一张表


-----------------------------------------------------------------

(返回数据给浏览器)

HttpResponse  由程序员创建

HttpRequest   由Django创建


-----------------------------------------------------------------






