本文大部分抄袭于 http://liujiangblog.com/course/django/102,侵隐!
思路:先在本机创建好项目,再移植到服务器上,本机环境尽量与Server端环境一样,
python3.6 django2.2.0
开发软件 pycharm
首先创建项目sams (Server assets management system)
django-admin startproject sams
cd sams
python manage.py startapp login
查看目录结构
然后设置语言和时区,在setting中修改LANGUAGE_CODE和TIME_ZONE,修改为
LANGUAGE_CODE = 'zh-hans' TIME_ZONE = 'Asia/Shanghai'
然后启用项目,成功后用浏览器访问127.0.0.1:8000如下图所示
python manage.py runserver
我们使用数据库管理登录的账户密,所以我们登录到Server上
mysql -u root -p
#然后按两下回车登录mysql
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
// %:表示从任何主机连接到mysql服务器,password自己任意设置
FLUSH PRIVILEGES;
// 刷新数据库
CREATE DATABASE sams CHARACTER SET utf8;
show databases;
//当然你可以新建其他登录mysql的账户并设置权限,此处只是为了省事儿
然后我们连接使用django连接数据库
依赖pymysql
pip install pymysql
修改setting, 在前面加上 import pymysql
在之后在setting中找到之前DATABASES,将其注释掉.然后指定自己server端的mysql数据库
"""
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
"""
pymysql.install_as_MySQLdb()
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 数据库引擎
'NAME': 'sams', # 数据库名,先前创建的
'USER': 'root', # 用户名,可以自己创建用户
'PASSWORD': 'password', # 密码
'HOST': '10.244.220.220', # mysql服务所在的主机ip
'PORT': '3306', # mysql服务端口
}
}
至此数据库设置已完成
然后就是数据库模型设置
此处我只把注册当成一个限制登录的操作,所以很多东西都可以不添加,有需要的话再举一反三进行添加相关栏位(我只需要账户,密码,有需要可以再添加一些性别,创建日期,管理员/用户等)
进入login/models.py
文件
from django.db import models
# Create your models here.
class User(models.Model):
name=models.CharField(max_length=128,unique=True)
password=models.CharField(max_length=256)
class Meta:
ordering = ["name"]
db_table='user'
然后注册app(login为一个app),每新增一个app都需要在settings里面设定
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'login',
]
app中的models建立好了后,并不会自动地在数据库中生成相应的数据表,需要你手动创建。
进入Pycharm的terminal终端,执行下面的命令:
python manage.py makemigrations
返回结果:
D:\aworkstation\sams>python manage.py makemigrations
Migrations for 'login':
login\migrations\0001_initial.py
- Create model User
D:\aworkstation\sams>
Django自动为我们创建了login\migrations\0001_initial.py
文件,保存了我们的第一次数据迁移工作,也就是创建了User模型。
接着执行下面的命令:
python manage.py migrate
Django将在数据库内创建真实的数据表。如果是第一次执行该命令,那么一些内置的框架,比如auth、session等的数据表也将被一同创建,如下所示:
D:\aworkstation\sams>python manage.py migrate
System check identified some issues:
WARNINGS:
?: (mysql.W002) MySQL Strict Mode is not set for database connection 'default'
HINT: MySQL's Strict Mode fixes many data integrity problems in MySQL, such as data truncation upon insertion, by escalating warnings in
to errors. It is strongly recommended you activate it. See: https://docs.djangoproject.com/en/2.2/ref/databases/#mysql-sql-mode
Operations to perform:
Apply all migrations: admin, auth, contenttypes, login, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying login.0001_initial... OK
Applying sessions.0001_initial... OK
D:\aworkstation\sams>
在mysql上就可以看到新建的表了
MariaDB [(none)]> use sams;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [sams]> show tables;
+----------------------------+
| Tables_in_sams |
+----------------------------+
| auth_group |
| auth_group_permissions |
| auth_permission |
| auth_user |
| auth_user_groups |
| auth_user_user_permissions |
| django_admin_log |
| django_content_type |
| django_migrations |
| django_session |
| user |
+----------------------------+
11 rows in set (0.00 sec)
MariaDB [sams]>
但此时表的内容是空的
MariaDB [sams]> select * from user;
Empty set (0.00 sec)
我们进行到下一步,使用django自带的admin后台管理,在admin中注册这个模型
进入login/admin.py
文件,代码如下:
from django.contrib import admin
# Register your models here.
from . import models
admin.site.register(models.User)
Django的admin后台拥有完整的较为安全的用户认证和授权机制,防护等级还算可以。
要进入该后台,需要创建超级管理员,该管理员和我们先前创建的User用户不是一个概念,要注意区别对待。
同样在Pycharm的终端中,执行下面的命令:
python manage.py createsuperuser
D:\aworkstation\sams>python manage.py createsuperuser
用户名 (leave blank to use 'Administrator'): admin
电子邮件地址:
Password:
Password (again):
Superuser created successfully.
D:\aworkstation\sams>
然后执行Python manage.py runserver 就可以启动我们的开发服务器了,然后在浏览器中访问http://127.0.0.1:8000/admin/
地址
就可以输入账户密码登录了 登录后的界面如图所示