django的基本使用

django的使用
   环境配置
      window10
      python3.7.4
      django3.0.3
   第一步创建项目
      1.选择项目的目标位置创建文件夹
      2.打开shell,cd到目标文件夹路劲
      3.输入 django-admin startproject  project  创建新项目名称为project
      4.输入tree   .   /f  可以看到目录的层级

   目录层级说明
      D:\DJANGO\FIRST_DAY
                  └─projecct
                      │  manage.py   一种命令行的工具,可以使我们以多种方式与django交互
                      │
                      └─projecct
                              asgi.py       异步处理
                              settings.py  配置文件
                              urls.py       项目url文件
                              wsgi.py       项目于wsgi兼容的web服务器接口
                              __init__.py    告诉python该文件夹为包对象

     第二步基本操作
       设计表结构
          班级表
             表名   grades
             字段 班级名称   gname
                   成立时间   gdate
                   女生总数   ggirlnum
                   男生总数   gboynum
                   是否删除   isDelete

             表名   students
             字段 姓名 sname
                   性别 ssex
                   年龄 sage
                   简介 scontend
                   班级名称 sgrade
                   是否删除 isDelete

      配置数据库
         django默认使用SQLite数据库
         修改默认数据库,进入settings.py文件修改其中的DATABASE参数
            1.打开__init__.py写入
               import pymysql
               pymysql.install_as_MySQLdb()
            2.打开settings.py修改DATABASE参数为
               DATABASES = {
                   'default': {
                       'ENGINE': 'django.db.backends.数据库类型',
                       'NAME': '数据库名称',
                       'USER': '用户名',
                       'PASSWORD': '密码',
                       'PORT': '端口号',
                       'HOST': '数据库ip',
                   }
               }

      创建应用
         以个项目可以创建多个应用,每个应用处理一个事件
         1.打开shell进入项目目录,输入python manage.py  startapp myApp
         myApp为应用名称
         2.目录层级
            myApp
              │  admin.py   站点配置
              │  apps.py
              │  models.py   模型
              │  tests.py
              │  views.py    视图
              │  __init__.py
              │
              └─migrations
                      __init__.py

       激活应用
          1.打开settings.py  配置文件找到INSTALLED_APPS,最后一行加上'myApp'

       定义模型
          1.一个数据表格就对应一个模型
          2.在myApp的models.py中定义模型,导入from django.db import models
          模型要继承models.Model类
             //表名
             class Grades (models.Model):
                gname = models.CharField(max_length= 20)
                gdate = models.DateTimeField()
                ggirlsnum = models.IntegerField()
                gboysnum = models.IntegerField()
                isDelet = models.BooleanField(default= False)

            class Students(models.Model):
                sname = models.CharField(max_length= 20)
                ssex = models.BooleanField(default= False)
                sage = models.IntegerField()
                scontend = models.CharField(max_length= 20)
                # 关联外键,建立对应关系,参数一为主体,参数二为数据丢失操作CASCADE删除关联对象
                sgrade = models.ForeignKey("Grades", on_delete= models.CASCADE)
                isDelete = models.BooleanField(default= False)
            注意:不需要设定主键,主键会自动添加。

      生成数据表
         1.生成迁移文件
            打开shell进入项目目录,输入python manage.py makemigrations,此时生成了迁移文件但是数据库中并没有表格。
               出现mysqlclient 1.3.13.......you has 0.9.3错误时
               1.进入Python\Python37\Lib\
               site-packages\django\db\backends\mysql\base.py
               将文件中的如下代码注释
               if version < (1, 3, 3):
                   raise ImproperlyConfigured("mysqlclient 1.3.3 or newer is required; 
                   you have %s" % Database.__version__)
               2、File “C:\Python37\lib\site-packages\django\db\backends\mysql\operations.py”, line 146, in last_executed_query   
               query = query.decode(errors=‘replace’)   
               打开此文件把146行的decode修改为encode

         2.执行迁移
            接着输入python manage.py migrate 此时数据库中就会产生我们想要的表格。

         3.测试数据
            接着输入python manage.py shell 进入命令行模式
            输入
               from myApp.models import Grades,Students
               from django.utils import timezone 
               from datetime import *
               

            插入数据
               grade0 = Grades()
               grade0.gname = 'python04'
               grade0.gdate = datetime(year=2020,month=2,day=8)
               grade0.ggirlsnum = 3
               grade0.gboysnum = 70
               grade0.save()
               Grades.objects.all()//查看数据是否储存成功

            查看某个特定的数据
               Grades.objects.get(pk= n)
               再次输入上方数据,创建新数据对象
               grade1 = Grades()
               grade1.gname = 'python04'
               grade1.gdate = datetime(year=2020,month=2,day=8)
               grade1.ggirlsnum = 3
               grade1.gboysnum = 70
               grade1.save()
               Grades.objects.get(pk= 2)//可与看到干输入的数据

            修改数据
               对象名.属性 = 值
               对象名.save()
               例如
                  grade1.name = 'python06'
                  grade1.save()

            删除数据
               对象名.delete()//物理删除

            创建关联数据
               stu = Students()
               stu.sname = 'tom'
               stu.ssex = 1
               stu.sage = 20
               stu.scontend = 'I am tom'
               //关联外键
               stu.sgrade = grade1
               stu.save()

               获取关联的所有数据
                  对象名.关联类名小写_set.all()
                  grade1.students_set.all()

               从主对象创建关联数据对象(u中文转义)
                  stu4 = grade1.students_set.create(sname=u"李强",ssex=1,sage=28,scontend=u'我是李强')
                  注意:直接添加到数据表中了,不需要保存。

      启动服务器
         还是project目录下的shell输入python manage.py runserver ip:port
            注意:ip不写表示本机,port默认为8000,轻量级服务器测试用

      admin站点管理
         功能:提供负责添加、修改、删除数据可视化窗口
         1.配置:在settings.py中的INSTALLED_APPS添加'django.contrib.admin', 默认添加好的
         2.创建管理员账户
            还是在project目录的shell命令行输入python manage.py createsuperuser
            输入账户名 root 密码 123456789
         3.进入管理员界面
            输入网址http://localhost:8000/admin
            界面的汉化,进入settings.py修改
            LANGUAGE_CODE = 'zh-Hans'
            TIME_ZONE = 'Asia/Shanghai'
         4.管理数据表
            进入admin.py输入
               # 导入设定的模型
               from .models import Grades,Students
               # 注册设定的模型
               admin.site.register(Grades)
               admin.site.register(Students)
         5.自定义界面
            修改代码
               from django.contrib import admin

                    # Register your models here.

                    # 导入设定的模型
                    from .models import Grades,Students

                    class GradesAdmin(admin.ModelAdmin):
                        #列表页属性
                        # 显示字段标签
                        list_display = ['pk', 'gname', 'gdate', 'ggirlsnum', 'gboysnum', 'isDelet']
                        # 过滤器,添加过滤条件
                        list_filter = ['gname']
                        #搜索字段,添加搜索方式
                        search_fields = ['gname']
                        #xianshi每页显示最大数据量,多的分页
                        list_per_page = 5
                        #添加、修改页属性
                        #对添加、修改页属性从新排序
                        # fields = ['gname', 'ggirlsnum', 'gdate', 'gboysnum', 'isDelet']
                        # 对添加和修改页的属性分组并排序,fields和fieldset不可同时使用
                        fieldsets = [
                            ('string',{'fields': ['gname', 'gdate']}),
                            ('number', {'fields': ['ggirlsnum', 'gboysnum','isDelet']})
                        ]
                    # 注册设定的模型
                    admin.site.register(Grades, GradesAdmin)

            6.创建对象一并添加关联对象
                # TabularInline扁平添加 stackedInline堆叠添加
                class GradesAddStudents(admin.TabularInline):
                    # 采用的模型
                    model = Students
                    # 添加条数
                    extra = 2

                class GradesAdmin(admin.ModelAdmin):
                    # 添加关联数据
                    inlines = [GradesAddStudents]

            7.布尔值的显示修改和页面列项的修改
            class StudentsAdmin(admin.ModelAdmin):
               # 更改布尔值的显示内容
                def sex(self):
                    if self.ssex:
                        return '男'
                    else:
                        return '女'
                # 修改页面列项的名称
                sex.short_description = '性别'
         8.执行动作的位置修改
         class StudentsAdmin(admin.ModelAdmin):
                def sex(self):
                    if self.ssex:
                        return '男'
                    else:
                        return '女'
                # 修改页面列项的名称
                sex.short_description = '性别'
                #执行动作的位置更该
                actions_on_bottom = True
                actions_on_top = False

         9.注册的简易写法
            @admin.register(Students)
            class StudentsAdmin(admin.ModelAdmin):
                # 更改布尔值的显示内容
                def sex(self):
                    if self.ssex:
                        return '男'
                    else:
                        return '女'
                # 修改页面列项的名称
                sex.short_description = '性别'
                list_display = ['sname',sex,'sage', 'scontend', 'sgrade', 'isDelete']
                list_per_page = 3
                list_filter = ['sname', 'sage']
                #执行动作的位置更该
                actions_on_bottom = True
                actions_on_top = False
            # admin.site.register(Students,StudentsAdmin)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

python-newer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值