• Django 学习笔记(四) --- 模型和数据库


    人生苦短 ~ 

    Tips:仅适用于 Python 3+(反正差别不大,py2 改改也能用)。因为据 Python 之父 Guido van Rossum 说会在 2020 年停止对 Python 2 的官方支持,所以如果你还在使用 Python 2 那就要早做准备了,毕竟没有官方的支持使用起来也不顺心的。

    1. 配置 MySQL 数据库

    如果你没安装 mysql 驱动,可以执行以下命令安装:

    pip install mysqlclient

    我们在项目的 settings.py 文件中找到 DATABASES 配置项,将其信息修改为:

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',  # 或者使用 mysql.connector.django
            'NAME': 'mydjango',    # 数据库名称
            'USER': 'root',    # 用户名
            'PASSWORD': '123456',    # 密码
            'HOST':'localhost',    # 地址
            'PORT':'3306',    # 端口
        }
    }

    2. 配置模型 Models

    Django 规定,如果要使用模型,必须要创建一个 app。但我们这次就不在新创建了,使用之前创建的 app mydjango

    我们修改模型 mydjango/models.py 文件,修改内容如下:

    from django.db import models
    
    class TUser(models.Model):
        name = models.CharField(max_length=20)
        age = models.IntegerField()

    这里如果不自定义主键,django 将会自动帮我们创建 id 主键。

    表名组成结构为:应用名_类名(如:mydjango_tuser)。

    以上的类名代表了数据库表名,且继承了 models.Model,类里面的字段代表数据表中的字段(name),数据类型则由 CharField(相当于 varchar)、DateField(相当于 datetime)、IntegerField(相当于 int), max_length 参数限定长度。

    想查看详细的数据类型信息请移步 #Django models 常用数据类型

    3. 创建表结构

    配置完以上步骤后执行以下命令创建表结构:

    python manage.py migrate   # 创建表结构
    python manage.py makemigrations mydjango  # 让 Django 知道我们在我们的模型有一些变更
    python manage.py migrate mydjango  # 创建表结构

    创建成功后的输出内容,对应的表结构,以及模型表字段

    4. 数据库操作

    在我们的 App mydjango 模型中创建一个文件 dbtest.py,用于数据库的增删改查操作。

    打开文件 mydjangourls.py,修改为如下内容:

    from django.urls import path
    from mydjango import views, dbtest
    
    urlpatterns = [
        path('hello/', views.hello),
        path('index/', views.index),
        path('db/addUser/', dbtest.addUser),
        path('db/getUserAll/', dbtest.getUserAll),
        path('db/updateUser/', dbtest.updateUser),
        path('db/delUser/', dbtest.delUser),
    ]

    打开文件 dbtest.py

    增加数据。需要先创建对象,然后再执行 save 函数,相当于 SQL 中的 INSERT:

    from django.http import HttpResponse
     
    from mydjango.models import TUser
     
    # 数据库操作,增加用户
    def addUser(request):
        try:
            tUser = TUser(name='cq', age=19)
            tUser.save()
            return HttpResponse("<p>数据添加成功!</p>")
        except:
            return HttpResponse("<p>数据添加失败</p>")

    打开地址 http://127.0.0.1:8000/mydjango/db/addUser/,不出意外就和我一样添加成功:

    查询数据。Django 提供了多种方式来获取数据库的内容。

    # 获取所有用户数据
    def
    getUserAll(request): response = "" try: # 通过 objects 这个模型管理器的 all() 获得所有数据行,相当于 SQL 中的 SELECT * FROM list = TUser.objects.all() # 输出所有数据 for var in list: response += "id = " + str(var.id) + ",name = " + var.name + ",age = " + str(var.age) + "<br />" return HttpResponse("<p>" + response + "</p>") except: return HttpResponse("<p>查询数据失败</p>")

    以上代码是查询全部的数据, str(var.id) 和 str(var.age) 表示的是把 int 类型数据转为 string 类型,因为 HttpResponse 只能返回 string 类型,不然会抛异常。

    其他查询方式:

    # filter 相当于 SQL 中的 WHERE,可设置条件过滤结果
    response = TUser.objects.filter(id=1) 

    # 获取单个对象
    response = TUser.objects.get(id=1)

     更新数据。修改数据可以使用 save()  或 update():

    # 更新用户数据
    def updateUser(request):
        try:
            # 修改其中一个 id=1 的 name 字段,再 save,相当于 SQL 中的 UPDATE
            tUser = TUser.objects.get(id=1)
            tUser.age = 21
            tUser.save()
            return HttpResponse("<p>数据修改成功!</p>")
        except:
            return HttpResponse("<p>数据修改失败</p>")

    其他更新方式:

    # 另外一种方式,update 方法
    TUser.objects.filter(id=1).update(age=21)

    # 修改所有的列
    TUser.objects.all().update(age=18)

    删除数据。删除数据库中的对象只需调用该对象的 delete() 方法即可:

    # 删除用户数据
    def delUser(request):
        try:
            # 删除 id=1 的数据
            tUser = TUser.objects.get(id=1)
            tUser.delete()
            return HttpResponse("<p>数据删除成功!</p>")
        except:
            return HttpResponse("<p>数据删除失败</p>")

    其他删除方式:

    # 另外一种方式
    TUser.objects.filter(id=1).delete()
        
    # 删除所有数据
    TUser.objects.all().delete()

    5. 激活管理界面

    首先确认你的 HelloDjango/urls.py 文件是否有如下配置:

    urlpatterns = [
        url('admin/', admin.site.urls),
    ]

    如果有的话打开服务器输入网址  则会在浏览器中出现如下界面:

     

    由于我们数据库是没有配置登录帐号的,所以不能进行登录,需要通过 python manage.py createsuperuser 来创建一个超级用户:

    最开始创建失败的原因是由于密码太短,至少需要八位字符;全是数字;该密码太常见了,所以这是需要注意的地方。

    然后我们就可以使用该帐号登录系统:

     

    打开我们的 App 模块中的 mydjango/admin.py 文件,把我们的 Models 添加进我们的 admin 管理页面:

    from django.contrib import admin
    from mydjango.models import TUser
     
    # Register your models here.
    admin.site.register(TUser)

     

    然后我们就可以在后台进行我们的模块管理了。

    ~ 我学 Python

  • 相关阅读:
    iOS设计模式之简单工厂模式
    Spring Boot Admin的使用
    使用Maven创建一个Spring MVC Web 项目
    SpringMVC简单项目配置
    web框架之Spring-MVC环境搭建
    搭建Spring4+Spring MVC web工程的最佳实践
    IntelliJ IDEA和Eclipse最常用的快捷键对应表:
    Cleanup failed to process the following paths错误的解决
    idea的修改文件变颜色
    IDEA下搜狗输入法输入中文时卡着不动的参考解决方法
  • 原文地址:https://www.cnblogs.com/yjq520/p/9013345.html
Copyright © 2020-2023  润新知