002-Django数据库及后台admin配置

连接mysql数据库

  1. 数据库准备

    1. 如果连接本机数据库,mysql安装及配置可参考https://www.cnblogs.com/feizisy/p/11882521.html
    2. 如果连接阿里云RDS,需要阿里云工作台-数据安全性-白名单内添加外网IP
      白名单设置:
      127.0.0.1 不允许任何IP访问
      0.0.0.0/0 允许任何IP访问
  2. 创建数据库

    1. 本机:

      create database your_database_name
      
    2. 阿里云:阿里云工作台-数据库管理-创建数据库

  3. yourprojectname/settings.py 配置数据库

    # Database
    # https://docs.djangoproject.com/en/2.2/ref/settings/#databases
    
    DATABASES = {
        'default': dict(ENGINE='django.db.backends.mysql',
                        HOST='your_host',
                        #本机数据库,使用127.0.0.1
                        #阿里云数据库,使用阿里云工作台-数据库连接-外网地址
                        PORT='3306',
                        NAME="your_database_name",
                        USER='your_username',
                        PASSWORD='your_password')
    }
    
  4. yourprojectname/init.py 下更改pymysql驱动,原默认为mysqldb(python3不再支持)

    import pymysql
    pymysql.install_as_MySQLdb()
    
  5. yourappname/models.py 创建数据库表

    from django.db import models
    
    """
    用户表
    """
    
    class User(models.Model):
        username = models.CharField(verbose_name="用户名", max_length=20, unique=True, null=True)
        status = models.CharField(verbose_name="用户状态", max_length=4, null=True,help_text="0:已删除;1:使用中",default=1)
        iphone = models.CharField(verbose_name="手机号", max_length=11, unique=True, null=True)
        email = models.EmailField(verbose_name="邮箱", max_length=20, unique=True)
        signature = models.TextField(verbose_name="签名", max_length=500)
        createtime = models.DateTimeField(verbose_name="创建时间", auto_now=True)
    
    def __str__(self):
        return self.realname
    
  6. 数据库同步,终端执行,中间可能会遇到部分问题,参考https://www.cnblogs.com/feizisy/p/11847996.html

     python manage.py makemigrations
     python manage.py migrate    #创建数据库表
    
  7. 迁移完成,可以在终端执行show tables,或者阿里云官网或navicat客户端查看django自带的一些表和你自己创建的User表

  8. 插入一条数据吧,在你的User表里,命令插入或者后面admin后台页面插入

  9. #如果命令插入的时候遇到更新中文字符,编码问题,三层更改为utf8
    
    alter database hf character set utf8;
    alter table auth_user  default character set utf8;
    alter table auth_user change signature signature varchar(500) character set utf8;
    

models详细的数据操作

from yourappname.models import User
from datetime import datetime


# 创建一个用户
>>> User.objects.create(username = "仙女",status = "1", iphone = "18832288888", email = "feizisy@126.com", signature = "今天也要开心哟", createtime = datatime(2019,11,22,20,58))


# 查询User中所有的对象列表
>>> User.objects.all()
<QuerySet [User:仙女]>
# 查询User中符合条件的对象列表
>>> User.objects.filter(username = "仙女")
# 查询符合条件的对象
>>> User.objects.get(id=1)
<User:仙女>
>>> User.objects.get(username__startswith='仙')
<User:仙女>
>>> User.objects.get(username__contains='女')
<User:仙女>
>>> User.objects.get(id=2)
Traceback (most recent call last):
    ...
DoesNotExist: User matching query does not exist.
  

# 更新数据
>>> r = User.objects.get(id=1)
>>> r.username = "大仙女"
>>> r.save()
# 打印查看
>>> r.username
大仙女


# 删除该条数据
>>> r.delete()

pymysql的补充操作

import pymysql

# 连接数据库
conn = connect{
  host = "127.0.0.1"
  user = "root"
  password = "the password of root"
  db = "the name of the database"
  charset = "the charset of the database"
  cursorclass = cursors.DicCursor
}

try:
  # 获取数据库操作游标
  with conn.cursor() as cursor:
    sql = "select * from User where username = '仙女'"
    # 执行SQL语句
    cursor.execute(sql)
    # 提交数据库执行
    cursor.commit()
    result = cursor.fetchone()
    print(result)
finally:
  # 关闭连接
  conn.close()

配置admin后台

  1. 创建管理员账号

    python manage.py createsuperuser
    
  2. 运行项目

    python manage.py runserver 127.0.0.1:8001
    
  3. 可以在yourprojectname/settings.py下更改默认语言

    LANGUAGE_CODE = 'zh-hans'
    
  4. 访问 http://127.0.0.1:8001/admin/,用上面设置的用户名和密码登录

配置admin菜单视图

  1. yourappname/admin.py 下可定义admin相关菜单视图

    from django.contrib import admin
    from yourappname.models import *
    
    # Register your models here.
    
    class Useradmin(admin.ModelAdmin):
        list_display = ['id', 'username', 'iphone', 'email', 'signature','status']   #列表
        search_fields = ['username']   #搜索栏
       
    admin.site.register(User, Useradmin) #注册模型
    
  2. 刷新admin后台登录页面,点击你的user表进入,你可以看到

posted @ 2019-11-18 16:23  feizisy  阅读(355)  评论(0编辑  收藏  举报