Django App(二) Connect Mysql & defualt App admin

        这一篇接着上一篇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上不是必须的

原文地址:https://www.cnblogs.com/andayhou/p/8336490.html