Django-admin连接mysql页面显示数据

环境介绍

很久之前有个java项目,后来由于调整将这个项目的前端给调没了,就剩下数据库,所以之后添加账号都是用mysql客户端去连接数据库去改表。
所以现在的环境是:mysql 数据库 password 是md5 加密

安装Django

本次参考:http://www.jb51.net/article/42870.htm
http://blog.csdn.net/styyzxjq2009/article/details/39585323
http://www.runoob.com/django/django-model.html
pip 版本:9.0.1
django版本:1.11.2
本次采用pip安装

pip install django

要连接mysql需要mysqp-python包,

mysql-python安装:http://www.jianshu.com/p/9ecf885013d6

创建第一个django项目

django-admin.py startproject HelloWorld

创建完成后我们可以查看下项目的目录结构:

$ cd HelloWorld/
$ tree
.
|-- HelloWorld
|   |-- __init__.py
|   |-- settings.py
|   |-- urls.py
|   `-- wsgi.py
`-- manage.py

目录说明:
HelloWorld: 项目的容器。
manage.py: 一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互。
HelloWorld/init.py: 一个空文件,告诉 Python 该目录是一个 Python 包。
HelloWorld/settings.py: 该 Django 项目的设置/配置。
HelloWorld/urls.py: 该 Django 项目的 URL 声明; 一份由 Django 驱动的网站"目录"。
HelloWorld/wsgi.py: 一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目。

启动项目

接下来我们进入 HelloWorld 目录输入以下命令,启动服务器:
python manage.py runserver 0.0.0.0:8000

报错:启动django后,不能访问,报400错误。
原因:没有开启允许访问
处理:编辑HelloWorld目录下setting.py ,把其中的
ALLOWED_HOSTS=[]改成ALLOWED_HOSTS=[''] ## 表示任意地址。页面400

Django 提供了基于 web 的管理工具。

Django 自动管理工具是 django.contrib 的一部分。你可以在项目的 settings.py 中的 INSTALLED_APPS 看到它:
/HelloWorld/HelloWorld/settings.py 文件代码:

INSTALLED_APPS = (
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions', 
 'django.contrib.messages',
 'django.contrib.staticfiles',)

django.contrib是一套庞大的功能集,它是Django基本代码的组成部分。
激活管理工具
通常我们在生成项目时会在 urls.py 中自动设置好,我们只需去掉注释即可。
配置项如下所示:
/HelloWorld/HelloWorld/urls.py 文件代码:

# urls.pyfrom django.conf.urls import urlfrom django.contrib import admin 
urlpatterns = [ url(r'^admin/', admin.site.urls),]

当这一切都配置好后,Django 管理工具就可以运行了。
使用管理工具
启动开发服务器,然后在浏览器中访问 http://127.0.0.1:8000/admin/,得到如下界面:

创建django-admin管理员账号

你可以通过命令 python manage.py createsuperuser 来创建超级用户,如下所示:

#cd HelloWord
# python manage.py createsuperuserUsername
 (leave blank to use 'root'): admin
Email address: admin@runoob.com
Password:
Password (again):
Superuser created successfully.
[root@solar HelloWorld]#

之后输入用户名密码登录,界面如下:

Paste_Image.png

创建Django app 相当于项目的名称,后面在models.py中定义的class(表名)数据库中会以app名称命名开始

一个项目中包含一个或多个这样的app。app可以理解为一块功能集合。比如产品管理模块就包含增删该查等功能,可以把产品管理叫做一个app。每个Django app都有独立的models,views等,易移植和被复用。
DOS进入项目目录 执行

cd HelloWorld
python manage.py startapp products
products/
    __init__.py
    models.py
    tests.py
    views.py

设置连接mysql

修改settings.py

vim HelloWorld/settings.py
DATABASES = {  
    'default': {  
#        'ENGINE': 'django.db.backends.sqlite3',  
#        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),  
        'ENGINE': 'django.db.backends.mysql',  
        'NAME': 'django',#数据库名称  
        'USER': 'root',  
        'PASSWORD': '123456',   
    }  
}  

下面解释一下,里面参数的意思:
ENGINE : 指定数据库驱动,不同的数据库这个字段不同,下面是常见的集中数据库的ENGINE的写法:

django.db.backends.postgresql # PostgreSQL
django.db.backends.mysql # mysql
django.db.backends.sqlite3 # sqlite
django.db.backends.oracle # oracle

NAME: 指定的数据库名,如果是sqlite的话,就需要填数据库文件的绝对位置
USER: 数据库登录的用户名,mysql一般都是root
PASSWORD:登录数据库的密码,必须是USER用户所对应的密码
HOST: 由于一般的数据库都是C/S结构的,所以得指定数据库服务器的位置,我们一般数据库服务器和客户端都是在一台主机上面,所以一般默认都填127.0.0.1
PORT:数据库服务器端口,mysql默认为3306
HOST和PORT都可以不填,使用默认的配置,但是如果你有更改默认配置的话,就需要填入更改后的
配置完这,只是最简单的一步,下面就需要装python连接mysql数据库的驱动程序,首先,需要安装mysql的开发包,在shell,里面运行:

修改 products/models.py

from django.db import models  
from django.contrib.auth.hashers import make_password, check_password
import hashlib

# Create your models here.  
class Publisher(models.Model):#该类与数据库同步的时候会创建该表,如果使用之前的库和表,class 后就写数据库中你想要用的表
    name = models.CharField(max_length=30)  
    address = models.CharField(max_length=50)  
    city = models.CharField(max_length=60)  
    state_province = models.CharField(max_length=30)  
    country = models.CharField(max_length=50)  
    website = models.URLField() 
     password = models.CharField(max_length=50)

    def __unicode__(self):
        return self.name
    def save(self,*args,**kwargs): #设置password md5加密
        self.password = hashlib.md5(self.password).hexdigest()
        super(Publisher(你的类名),self).save(*args,**kwargs)
  
class Author(models.Model):  
    first_name = models.CharField(max_length=30)  
    last_name = models.CharField(max_length=40)  
    email = models.EmailField()  
  
class Book(models.Model):  
    title = models.CharField(max_length=100)  
    authors = models.ManyToManyField(Author)  
    publisher = models.ForeignKey(Publisher)  
    publication_date = models.DateField()  

再次编辑settings.py,

# Application definition

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'products',
)

在命令行中运行:

$ python manage.py migrate # 创建表结构

$ python manage.py makemigrations products# 让 Django 知道我们在我们的模型有一些变更
$ python manage.py migrate products # 创建表结构
看到几行 "Creating table…" 的字样,你的数据表就创建好了。
Creating tables ...
……
Creating table products_Author #我们自定义的表
……
表名组成结构为:应用名_类名(如:products_Author)。
注意:尽管我们没有在models给表设置主键,但是Django会自动添加一个id作为主键。

这时进入mysql,可以查看这些表已经创建

最后 将你的Models加入到Admin管理中(是在页面上显示)
admin.py

from django.contrib import admin  
  
# Register your models here.  
from books.models import Publisher, Author, Book  
  
class AuthorAdmin(admin.ModelAdmin):  
    list_display=('first_name','last_name','email')  
    search_fields=('first_name','last_name')  
  
admin.site.register(Publisher)  
admin.site.register(Author)  
admin.site.register(Book)  

当这一切都配置好后,现在你将发现Django管理工具可以运行了。 启动开发服务器(如前:python manage.py runserver ),然后在浏览器中访问:http://127.0.0.1:8000/admin/
就是简单的用户登录,然后就可以看到数据库的表,可以可视化的操作这些表了~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容