这一篇接着上一篇polls App自动创建admin app.
1.安装数据库
这里的内容从官网看越看越像 EntityFramework的内容.Python支持SQLite,MySql,Oracle,PostgreSQL,官网提供的例子连接的是Sqlite数据库,这篇将基于Mysql
首先查看MySql服务命令在前面的随笔中提到过:http://www.cnblogs.com/andayhou/p/8277364.html,在Terminal 中执行:
开启mysql57服务:
新打开一个cmd程序,切换到Mysql57的安装目录,打开Mysql数据库:
查看所有数据库:
创建本篇需要的数据库:myDataBase
2.Python 绑定数据库
Django 支持5.5及以上的Mysql数据库版本,本篇使用的Mysql版本是5.7.20,django,需要通过pip安装mysqlclient,terminal输入如下命令(pip的安装在本系列的第一篇有提到):
>pip install mysqlclient
配置Mysql连接地址,firstPro/settings.py
DATABASES = { # 'default': { # 'ENGINE': 'django.db.backends.sqlite3', # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), # } #以上是django默认配置的sqlite数据库 'default':{ 'ENGINE':'django.db.backends.mysql', 'NAME':'mydatabase', #数据库需要提前建 'USER':'root', 'PASSWORD':'123456', 'HOST':'localhost', 'PORT':'3306' } }
根据变更集,初始化程序,执行如下命令:
>python manage.py migrate
django会根据配置信息,初始化程序环境,在上面我们配置了默认数据为mysql,django的默认app为admin,执行上面的命令,django连接配置的数据库,创建app admin或者django所要求的表,打开myDatabase就能发现这些表:
接下来我们创建app polls 所要求创建的数据表
3.创建Models
根据业务需要需要创建两个实体类Question,和Choice,编辑polls/models.py如下:
1 from django.db import models 2 3 4 class Question(models.Model): 5 question_text = models.CharField(max_length=200) 6 pub_date = models.DateTimeField('date published') 7 8 9 class Choice(models.Model): 10 question = models.ForeignKey(Question, on_delete=models.CASCADE) 11 choice_text = models.CharField(max_length=200) 12 votes = models.IntegerField(default=0)
在firstPro/settins.py添加app polls的配置,告知项目polls为已安装的app
初始化app polls的变更集
输入如下命令:
>python manage.py makemigrations polls
在firstPropollsmigrations路径下生成了一个新文件 0001_initial.py,这个命名为0001的文件中,已经生成好了对应数据库的字段名称,类型,以及约束等,下面执行的命令将生成Question和Choice两张表:
>python manage.py sqlmigrate polls 0001
在执行一次 >python manage.py migrate初始化项目运行环境
>python manage.py migrate
打开mysql 查看数据表:
4.创建项目系统用户
利用django默认app admin创建系统超级用户,执行以下命令:
>python manage.py createsuperuser username:>admin Email address:> remih@qq.ccom Password: >********** Password (again):> *********
启动站点:
>python manage.py runserver #默认启动是localhost:8000
浏览器中输入http://localhost:8000/admin(这个路由在上节中配置过的)
在admin 下没有看到关于Question和Choice 数据表的维护
打开polls/admin.py注册数据表(或者实体类)
1 from django.contrib import admin #引入的默认ajango app admin 2 from .models import Question 3 from .models import Choice 4 admin.site.register(Question) #注册实体Question
5 admin.site.register(Choice)
重新刷新界面http://localhost:8000/admin/,你会发现,Question的编辑界面,没有列出问题的内容,为了方便添加数据polls/admin.py编辑如下[在这个系列第6篇将探讨,改造默认app admin]:
from django.contrib import admin from .models import Question from .models import Choice # admin.site.register(Question) #注释掉这里的信息 # admin.site.register(Choice) class ChoiceInLine(admin.TabularInline): model = Choice extra = 2 class QuestionAdmin(admin.ModelAdmin): list_display = ('question_text','pub_date','was_published_recently') fidldsets=[ (None,{'fields':['question_text']}), ('Date Infomation',{'fileds':['pub_date'],'class':['collage']}) ] inlines = [ChoiceInLine] admin.site.register(Question,QuestionAdmin)
通过上面的界面就可以维护项目用户和项目表了,界面的操作结果保存是保存到数据库的
备注: django连接mysql数据库参考 http://blog.csdn.net/it_dream_er/article/details/52092262
但是博客中提到的通过pip 安装 pymysql(python3以上的版本安装的是pymysql,python3 以下的版本安装的是 mySqldb),至少在django 2.0.1上不是必须的