您的位置:首页 > 数据库

Django项目详解3——数据库

2018-01-09 16:16 197 查看
这个项目就先用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配置及应用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: