一、数据库安装
mysite/settings.py配置文件,这是整个Django项目的设置中心,Django默认使用SQLite数据库,因为Python原生支持SQLite数据库,无序安装任何程序,就可以直接使用,当然创建一个实际项目,可以使用类似PostgreSQL的数据库,避免迁移问题。
1.Django自带的SQLite数据库,轻量级的
mysite/settings.py # 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‘), } }
如果你想使用其他的数据库,请先安装相应的数据库操作模块,并将settings文件中DATABASES位置的"default"的键值进行相应的修改,用于连接你的数据库。
2.使用其他数据库在settings配置
# mysite/settings.py # Database # https://docs.djangoproject.com/en/1.11/ref/settings/#databases import pymysql # 一定要添加这两行!通过pip install pymysql! pymysql.install_as_MySQLdb() DATABASES = { ‘default‘: { ‘ENGINE‘: ‘django.db.backends.mysql‘, # 使用的数据库 ‘NAME‘: ‘mysite‘, ‘HOST‘: ‘192.168.1.1‘, # 路由 ‘USER‘: ‘root‘, # 数据库的用户名 ‘PASSWORD‘: ‘pwd‘, # 数据库密码 ‘PORT‘: ‘3306‘, # 端口,Mysql默认是3306端口 } }
ENGINE(引擎):
django.db.backends.sqlite3、 django.db.backends.postgresql、 django.db.backends.mysql、 # 常用数据库 django.db.backends.oracle, 其他也可以
NAME(名称)
类似Mysql数据库管理系统中用于保存项目内容数据库的名字。如果使用的是默认的SQLite,那么数据库将作为一个文件将存放在你的本地机器内,此时NAME应该是这个文件的完整绝对路径包含文件名,默认值:os.path.join(BASE_DIR, ’db.sqlite3’),将该文件储存在你的项目目录下
如果不适用默认的SQLite数据库,那么一些诸如USER,PASSWORD和HOST的参数必须手动指定!按照上述进行修改
注意:
修改时区:找到settings文件,将TIME_ZONE设置为国内所在的时区:Asia/Shanghai
默认情况,INSTALLED_APPS中会自动包含下列条目,他们都是Django自动创建的
django.contrib.admin:admin管理后台站点 django.contrib.auth:身份认证系统 django.contrib.contenttypes:内容类型框架 django.contrib.sessions:会话框架 django.contrib.messages:消息框架 django.contrib.staticfiles:静态文件管理框架
二、创建模型
Django通过自定义Python类的形式来定义具体的模型,每个模型的物理存在方式就是一个Python的类Class,每个模型代表数据库中的一张表,每个类的实例代表数据表中的一行数据,类中的每个变量代表数据表中的一列字段。Django通过模型,将Python代码和数据库操作结合起来,实现对SQL查询语言的封装。也就是说,你可以不会管理数据库,可以不会SQL语言,你同样能通过Python的代码进行数据库的操作。Django通过ORM对数据库进行操作,奉行代码优先的理念,将Python程序员和数据库管理员进行分工解耦。
创建两个模型
class Question(models.Model): """ 创建问题表 """ # 问题字段 question_text = models.CharField(max_length=200) # 发布时间 pub_date = models.DateTimeField("date published") class Choice(models.Model): """ 文章表 """ # 关联问题表 question = models.ForeignKey(Question, on_delete=models.CASCADE) # 创建文章描述 choice_text = models.CharField(max_length=200) # 创建投票数 default:默认从0开始 votes = models.IntegerField(default=0)
上面的代码非常简单明了。每一个类都是django.db.models.Model的子类。每一个字段都是Field类的一个实例,例如用于保存字符数据的CharField和用于保存时间类型的DateTimeField,它们告诉Django每一个字段保存的数据类型。
每一个Field实例的名字就是字段的名字(如: questiontext 或者 pubdate )。在你的Python代码中会使用这个值,你的数据库也会将这个值作为表的列名。
你也可以在每个Field中使用一个可选的第一位置参数用于提供一个人类可读的字段名,让你的模型更友好,更易读,并且将被作为文档的一部分来增强代码的可读性。
一些Field类必须提供某些特定的参数。例如CharField需要你指定max_length。这不仅是数据库结构的需要,同样也用于数据验证功能。
有必填参数,当然就会有可选参数,比如在votes里我们将其默认值设为0.
最后请注意,我们使用ForeignKey定义了一个外键关系。它告诉Django,每一个Choice关联到一个对应的Question(注意要将外键写在‘多’的一方)。Django支持通用的数据关系:一对一,多对一和多对多。
三、启用模型
1.创建app对应的数据库表结构
2.为Question和Choice对象创建基于Python的数据库访问API
首先我们先告诉Django项目
要将应用添加到项目中,需要在INSTALLEDAPPS设置中泽佳指向改应用的配置文件的连接,对于本列的投票应用,他的配置文件是polls/apps.py,路径各式为:polls.apps.PollsConfig,需要在INSTALLEDAPPS中,将改路径添加进去。
# mysite/settings.py INSTALLED_APPS = [ ‘django.contrib.admin‘, ‘django.contrib.auth‘, ‘django.contrib.contenttypes‘, ‘django.contrib.sessions‘, ‘django.contrib.messages‘, ‘django.contrib.staticfiles‘, ‘polls.apps.PollsConfig‘, # 添加app应用 ]
现在Django已经知道你的投票应用的存在了,并把它加入了项目的大家庭中。
1.执行命令
python manage.py makemigrations
会看到类似下面的提示
Migrations for ‘polls‘: polls\migrations\0001_initial.py - Create model Choice - Create model Question - Add field question to choice
通过运行 makemigrations:命令,相当于告诉Django你对模型有改动,并且你想把这些改动保存为一个"迁移(migration)"。
migrations:是Django保存模型修改记录的文件,这些文件保存在磁盘上,在本例子中,他是polls/migrations/001_initial.py。
接下来有一个叫做migrate:的命令将对数据库执行真正的迁移动作,但是在此之前,先看看migration的时候实际执行的SQL语句是什么,执行如下
python manage.py sqlmigrate polls 0001
2.运行migrate命令,在数据库中进行真正的表操作
python manage.py migrate
migrate命令对所有还未实施的迁移记录进行操作,本质上就是将对模型的修改体现到数据库中具体的表上面。Django通过一张djanog_migrations的表,记录并跟踪已经实施migrate动作。
migrations的功能非常强大,允许你随时修改你的模型,而不需要删除或者新建你的数据库或数据表,在不丢失数据的同时,实时动态更新数据库。我们将在后面的章节对此进行深入的阐述,但是现在,只需要记住修改模型时的操作分三步
运行python manage.py makemigrations为改动创建迁移记录。
运行python manage.py migrate,将操作同步到数据库。
四、admin后台管理站点
1.创建管理员用户
创建一个可以登录admin站点的用户:
python manage.py createsuperuser
输入用户名:
Username:admin
输入邮箱地址:
Email address:输入邮箱
输入密码:
Password: Password(again): Superuser created successfully.
2.启动开发服务器
1>服务器启动后,在浏览器访问http://127.0.0.1:8000/admin/。你就能看到admin的登陆界面了:
2>打开根url路由文件mysite/urls.py,修改其中admin.site.urls对应的正则表达式,换成你想要的,比如:
from django.conf.urls import url from django.contrib import admin urlpatterns = [ url(r‘^my/set/‘, admin.site.urls), ]
3.进入admin站点
利用刚才建立的admin账户,登陆admin
4.在admin中注册投票应用
现在还无法看到投票应用,必须先在admin中进行注册,告诉admin站点,请将polls的模型加入站点内,接受站点的管理。
打开polls/admin.py文件,加入下面的内容:
from django.contrib import admin from .models import Question admin.site.register(Question)
ps:这里需要注意:
- 页面中的表单是由Question模型自动生成的。
- 不同的模型字段类型(DateTimeField, CharField)会表现为不同的HTML input框类型。
- 每一个DateTimeField都会自动生成一个可点击链接。日期是Today,并有一个日历弹出框;时间是Now,并有一个通用的时间输入列表框。在页面的地步 ,则是一些可选项按钮
- delete:弹出一个删除确认页面
- save and add another:保存当前修改,并加载一个新的空白的当前类型对象的表单。
- save and continue editing:保存当前修改,并重新加载该对象的编辑页面。
- save:保存修改,返回当前对象类型的列表页面。
原文地址:https://www.cnblogs.com/xiaohei001/p/9675490.html