环境介绍
很久之前有个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]#
之后输入用户名密码登录,界面如下:
创建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/
就是简单的用户登录,然后就可以看到数据库的表,可以可视化的操作这些表了~