安装 MySQL
能够参考个人这篇博客:MySQL 5.7.21 安装教程python
由于 Python2的mysql库为:mysqldb,而Python3的为:pymysql,因此要在 Pycharm
中安装 pymysql
。和以前安装 django
相似,见下图:mysql
打开 mysite/settings.py
,找到 DATABASES
,修改红框里面的内容:sql
输入代码:shell
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mysql',
'USER': 'root',
'PASSWORD': 'root',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
复制代码
若是 NAME
不写成 mysql
的话,进行下面操做会报错:数据库
由于是 Python3
,切记要在同级的 __init__.py
文件添加如下代码:django
import pymysql
pymysql.install_as_MySQLdb()
复制代码
而后在 Terminal
中输入下面命令:浏览器
python manage.py migrate
复制代码
此时又遇到一个报错:服务器
根据上图显示的文件位置找到 operations.py
,修改 decode
为 encode
便可,大概在 146 行。app
可能也会遇到另外一个错,把 operations.py
同级的一个名为 base.py
的文件 3五、36 这两行注释掉:spa
再次运行一下上面的命令,会看到:
在这个简单的投票应用中,须要建立两个模型:问题 Question
和选项 Choice
。Question
模型包括问题描述和发布时间。Choice
模型有两个字段,选项描述和当前得票数。每一个选项属于一个问题。
编辑 polls/models.py
文件:
from django.db import models
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) # 选项描述
votes = models.IntegerField(default=0) # 当前得票数
复制代码
在文件 mysite/settings.py
中 INSTALLED_APPS
子项添加点式路径:
'polls.apps.PollsConfig',
复制代码
结果如红框所示:
而后在 Terminal
中输入下面命令:
python manage.py makemigrations polls
复制代码
将会看到相似于下面这样的输出:
下面进行迁移:
python manage.py sqlmigrate polls 0001
复制代码
将会看到:
再次运行 migrate
命令,在数据库里建立新定义的模型的数据表:
python manage.py migrate
复制代码
改变模型须要这三步:
models.py
文件,改变模型。python manage.py makemigrations
为模型的改变生成迁移文件。python manage.py migrate
来应用数据库迁移。在 Terminal
输入下面命令,进入交互式 Python
命令行:
python manage.py shell
复制代码
成功进入后,试试 database API 吧,试以前先修改一下 models.py
模型代码:
# Create your models here.
import datetime
from django.db import models
from django.utils import timezone
class Question(models.Model):
question_text = models.CharField(max_length=200) # 问题描述
pub_date = models.DateTimeField('date published') # 发布时间
def __str__(self):
return self.question_text
def was_published_recently(self):
return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200) # 选项描述
votes = models.IntegerField(default=0) # 当前得票数
def __str__(self):
return self.choice_text
复制代码
而后就能够试试 database API 了:
from polls.models import Choice, Question
Question.objects.all()
from django.utils import timezone
q = Question(question_text="What's new?", pub_date=timezone.now())
q.save()
q.id
q.question_text
q.pub_date
复制代码
须要退出交互式 Python
命令行时,按 Ctrl+Z
便可。
输入下面命令:
python manage.py createsuperuser
复制代码
而后分别输入用户名、邮箱、密码、再次确认。
Django
的管理界面默认就是启用的。让咱们启动开发服务器,看看它究竟是什么样的。
若是开发服务器未启动,用如下命令启动它:
python manage.py runserver
复制代码
打开浏览器,转到你本地域名的 "/admin/" 目录, -- 好比 "http://127.0.0.1:8000/admin/" 。你应该会看见管理员登陆界面:
输入刚才注册的用户名和密码,就能进入管理了:
发现投票应用没在索引页面里显示,因而咱们须要告诉管理页面,问题 Question
对象须要被管理。打开 polls/admin.py
文件,把它编辑成下面这样:
from django.contrib import admin
from .models import Question
admin.site.register(Question)
复制代码
如今咱们向管理页面注册了问题 Question
类。Django 知道它应该被显示在索引页里,刷新一下页面就有了:
点击 "Questions" 。如今看到是问题 "Questions" 对象的列表 "change list" 。这个界面会显示全部数据库里的问题 Question 对象,你能够选择一个来修改。这里如今有咱们在上一部分中建立的 “What's up?” 问题。
点击 “What's up?” 来编辑这个问题(Question)对象:
经过点击 “今天(Today)” 和 “如今(Now)” 按钮改变 “发布日期(Date Published)”。而后点击 “保存并继续编辑(Save and add another)”按钮。而后点击右上角的 “历史(History)”按钮。你会看到一个列出了全部经过 Django 管理页面对当前对象进行的改变的页面,其中列出了时间戳和进行修改操做的用户名:
django.db.utils.OperationalError: (1049, "Unknown database 'djangodb'")