django搭建一个资产管理系统2.登录系统

本文大部分抄袭于 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

查看目录结构

713640b98dc866323654e413047f9b1eb3c.jpg

然后设置语言和时区,在setting中修改LANGUAGE_CODE和TIME_ZONE,修改为

LANGUAGE_CODE = 'zh-hans'

TIME_ZONE = 'Asia/Shanghai'

然后启用项目,成功后用浏览器访问127.0.0.1:8000如下图所示

python manage.py runserver

5f0a2c955a895a129cd3447f6eaff8ab226.jpg

我们使用数据库管理登录的账户密,所以我们登录到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

42a25d49e94b14bf56faee2842d611f6b77.jpg

在之后在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/地址

就可以输入账户密码登录了 登录后的界面如图所示

e456f6f62b726c47bd31cb7b1b183ee10a1.jpg

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值