zoukankan      html  css  js  c++  java
  • 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上不是必须的

  • 相关阅读:
    redis和memcached的对比
    Linux根目录下各目录含义
    阿里云常用服务介绍
    Nginx的负载均衡算法、lvs的负载均衡算法
    MySQL高可用架构之MHA
    SQL server 2012 各个版本比较
    500 ZuulException: Forwarding error
    Hibernate --主键生成策略
    springboot配置activeMQ传输object类型的消息时:classnotfound问题
    JMS简介与API
  • 原文地址:https://www.cnblogs.com/andayhou/p/8336490.html
Copyright © 2011-2022 走看看