Django项目详解3——数据库

96
世外大帝
2018.01.09 16:35 字数 397

这个项目就先用sqlite3来实现

首先,衔接上一篇的内容,把cmdb注册到数据库应用列表中

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # 在这里加入应用
    "cmdb",  
]

还有一项很重要的,数据库配置,外置数据库的会有专门的一篇来介绍,本系列主要以完成一个完整的web为主,所以先用自带的sqlite

那么,在setting中,还有一个数据库常量,默认就是sqlite,什么都不用改

# Database
# https://docs.djangoproject.com/en/1.11/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

然后就可以写Model了,MTV中的M,app中的models.

from django.db import models


# Create your models here.

class UserInfo(models.Model):  # 需要继承Model类
    # 创建两个char类型字段,最大长度为32
    user = models.CharField(max_length=32)
    pwd = models.CharField(max_length=32)

然后都准备好了,就准备迁移数据,进入到项目目录下

根据model创建表,进行迁移准备

执行 python manage.py makemigrations

Migrations for 'cmdb':
  cmdb\migrations\0001_initial.py
    - Create model UserInfo

执行迁移命令

执行 python manage.py migrate

Operations to perform:
  Apply all migrations: admin, auth, cmdb, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying cmdb.0001_initial... OK
  Applying sessions.0001_initial... OK

至此,数据库操作完成,但是并没有彻底完成,还有最后一步需要修改views,修改views,那么之前的模拟数据自然就不需要了

from django.shortcuts import render
from django.shortcuts import HttpResponse
from cmdb import models


# Create your views here.


def welcome(request):  # request 封装了用户请求的所有内容
    return HttpResponse("my first django today")


def main(request):
    return render(request, "main.html", )


def login(request):
    if request.method == "POST":
        username = request.POST.get("username", None)
        password = request.POST.get("password", None)
        # 添加数据到数据库
        models.UserInfo.objects.create(user=username, pwd=password)

    # 从数据库读取数据
    user_list = models.UserInfo.objects.all()
    return render(request, "login.html", {"data": user_list})

现在启动项目后,表是空的,添加几条数据,再关闭服务后,再次开启,由于数据存储在数据库,所以重启后,数据不会丢失了,一个简单的小demo就实现了

其实,一开始是想做的好一点的,后来因为时间原因,没能写一个好一点的项目,不过目前已经可以实现一些基本的web操作了

完结源码
https://github.com/seeways/mysite

如果你要用MySQL,可以参考一下这篇:

Django项目详解——MySQL配置及应用

Python笔记
Web note ad 1