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

人生苦短 ~ html

Tips:仅适用于 Python 3+(反正差异不大,py2 改改也能用)。由于据 Python 之父 Guido van Rossum 说会在 2020 年中止对 Python 2 的官方支持,因此若是你还在使用 Python 2 那就要早作准备了,毕竟没有官方的支持使用起来也不顺心的。python

 

1. 配置 MySQL 数据库mysql

若是你没安装 mysql 驱动,能够执行如下命令安装:sql

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. 配置模型 Modelsdjango

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 主键。app

表名组成结构为:应用名_类名(如: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,用于数据库的增删改查操做。

打开文件 \mydjango\urls.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

相关文章
相关标签/搜索