当前位置:   article > 正文

日报系统1 创建框架 Django3.0_日报系统建主体表

日报系统建主体表

该项目手把手一步一步来搭建学习如何使用django3.0和mysql搭建我们常见的一个日报系统, 该系统的功能包括, 用户的注册,激活,登录,日报的编辑, 查看;
该项目可以学习到的知识有 Django,mysql,PHP,django,docker等
因此综合性较强
所有的细节已经在代码的后面加以注释

最后所有的代码已经开源到了gitee
点击自动跳转nwu_zjq/django3.0.git
本节代码01_模板创建

  • 先上一下效果图
    注册页面
    登录页面
    在这里插入图片描述
    在这里插入图片描述
  • 下图是根据日报系统增加的文件存储共享系统, 能够完全仿照百度云的全部狗能进行文件的操作
    在这里插入图片描述

话归正传

一. 环境搭建

python conda环境搭建具体请点击此处
mysql环境搭建具体请点击此处

  • 这里使用的是mysql本地搭建的, 如果是利用docker搭建的可能还有detail需要注意.
conda create -n dj_test python=3.6 # 安装环境
source activate dj_test # 进入环境
pip install -r requirements.txt # 安装必要的包
(dj_test) zjq@DESKTOP-2RLT53L:dj3_test$ django-admin startproject submission # 创建project
(dj_test) zjq@DESKTOP-2RLT53L:dj3_test$ cd submission/ # 进入project
(dj_test) zjq@DESKTOP-2RLT53L:submission$ python manage.py startapp user  # 创建app
(dj_test) zjq@DESKTOP-2RLT53L:submission$ mkdir apps # 
(dj_test) zjq@DESKTOP-2RLT53L:submission$ mv user apps
(dj_test) zjq@DESKTOP-2RLT53L:submission$ mkdir template # 模板,将来会将所有的html页面展示放入
(dj_test) zjq@DESKTOP-2RLT53L:submission$ mkdir static # 静态数据, 比如模板中需要用到的格式,图片等
(dj_test) zjq@DESKTOP-2RLT53L:submission$ mysql -u root -p # 进入数据库
mysql> create database dj3_test default character set utf8; # 创建数据库为dj3_test, 作为该项目的数据库用来保存数据
Query OK, 1 row affected (0.01 sec)
mysql> exit;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

其中requirements.txt的内容如下

asgiref==3.3.0
attrs==20.2.0
autobahn==20.7.1
Automat==20.2.0
certifi==2016.2.28
cffi==1.14.3
constantly==15.1.0
cryptography==3.2
daphne==2.5.0
Django==3.0
django-tinymce==2.6.0
hyperlink==20.0.1
idna==2.10
incremental==17.5.0
itsdangerous==1.1.0
pyasn1==0.4.8
pyasn1-modules==0.2.8
pycparser==2.20
PyHamcrest==2.0.2
PyMySQL==0.10.1
pyOpenSSL==19.1.0
pytz==2020.1
service-identity==18.1.0
six==1.15.0
sqlparse==0.4.1
tvm==0.8.dev0
Twisted==20.3.0
txaio==20.4.1
zope.interface==5.1.2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

二. 修改配置文件, 完成框架搭建

2.1 修改submission/init.py

import pymysql # 因为这里用到的是mysql
pymysql.install_as_MySQLdb()
  • 1
  • 2

2.2 修改submission/settings.py

import os
import sys
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# add by zjq
sys.path.insert(0, os.path.join(BASE_DIR, "apps")) # 让工程能够识别apps文件夹
AUTH_USER_MODEL="user.User" # 主表
LOGIN_IP = "10.15.14.146" # 主机的服务IP
save_root = "/mnt/e/05_Django/upload1/" # 文件保存的位置
# 数据库的配置 # 下面参数如果不改也是可以的, 不改默认使用数据库sqlite3, 这样就不需要配置mysql了
DATABASES = {
    'default': {
        # 默认数据库
        # 'ENGINE': 'django.db.backends.sqlite3',
        # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 
        # zjq 配置mysql
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'dj3_test', # 注意这个数据库通过root用户需要新建
        'HOST':'localhost',
        'USER':'root',
        'PASSWORD':'zjq', # 075290
        'PORT':3306, # 默认不用加
    }
}
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = '5=753t()55@7(_1hlbg7^fi8cd6-7zqxtxjs_gtxi=aumna@#j'
DEBUG = True
ALLOWED_HOSTS = []
# Application definition

INSTALLED_APPS = [
    "tinymce", # add by zjq 增加富文本框
    "user", #add zjq, 因为增加了apps的路径,因此这里不需要再使用apps.user
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    # 'django.middleware.csrf.CsrfViewMiddleware', # add by zqj, 不然在使用form请求会出现验证失败的问题
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'submission.urls'


TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [ 
            os.path.join(BASE_DIR, "template".replace("\\",'/')), # add by zjq 增加template文件夹
        ],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

WSGI_APPLICATION = 'submission.wsgi.application'
# Database
# https://docs.djangoproject.com/en/3.0/ref/settings/#databases

# Password validation
# https://docs.djangoproject.com/en/3.0/ref/settings/#auth-password-validators
AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]
# add by zjq
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = True
STATIC_URL = '/static/'
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static".replace("\\", "/")), # 添加静态文件加的路径到工程
)
# add by zjq 添加富文本编辑器配置文件
TINYMCE_DEFAULT_CONFIG = {
    'theme': 'advanced', # 高级主题, 下面是高宽
    'width': 600,
    'height': 400,
} 

# add by zjq 邮件配置
# 发送邮件配置
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
# EMAIL_USE_TLS = False
# smpt服务地址
EMAIL_HOST = 'smtp.qq.com'
EMAIL_PORT = 25
# 发件邮箱
EMAIL_HOST_USER = 'xxx@qq.com'
# 授权密码
EMAIL_HOST_PASSWORD = 'ypimwpgvjmtfbgjj'
# 收件人看到的发件人信息
EMAIL_FROM = 'nisl lab812<xxx@qq.com>'
#配置登录地址
LOGIN_URL = "/user/login"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
'
运行

2.3 创建用户操作的数据库基础格式

  • 在工程根目录下创建db文件夹, 新建文件base_model.py
from django.db import models
class BaseModel(models.Model):
    """抽象模型基类"""
    create_time = models.DateTimeField(auto_now_add=True, verbose_name = "创建时间")
    update_time = models.DateTimeField(auto_now=True, verbose_name = "更新时间")

    class Meta (object):
        """说明抽象模型类 """
        abstract = True
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 编辑apps/user/models.py用来创建用户表
from django.db import models
from django.conf import settings
from django.contrib.auth.models import AbstractUser  #用户验证
from db.base_model import BaseModel
from django.db import models
from tinymce.models import HTMLField

class User(AbstractUser, BaseModel):
    '''用户模型类'''
    class Meta:
        db_table = 'user'
        verbose_name = '用户'
        verbose_name_plural = verbose_name
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 编辑apps/user/admin.py用来配置显示用户的格式
class User(AbstractUser, BaseModel):
    school_number = models.CharField(default="0000", max_length=12,verbose_name = "学号" )
    is_manager = models.BooleanField(default=True, verbose_name='是否为管理员')

    '''用户模型类'''
    class Meta:
        db_table = 'user'
        verbose_name = '用户'
        verbose_name_plural = verbose_name
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

2.3 同步数据库

$ python manage.py makemigrations # 确定修改的数据库
Migrations for 'user':
  apps/user/migrations/0001_initial.py
    - Create model User 
python manage.py migrate # 同步
(dj_test) zjq@DESKTOP-2RLT53L:submission$ python manage.py createsuperuser # 创建管理员账户
用户名: zjq
电子邮件地址: xxx@qq.com
Password:
Password (again):
Superuser created successfully.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

2.4 运行测试

$ python manage.py runserver # 运行
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
November 05, 2020 - 20:55:10
Django version 3.0, using settings 'submission.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C. # 到这里就可以通过浏览器访问http://127.0.0.1:8000/了

python manage.py runserver 0:10086 # 这里的运行命令表示所有的IP都可以通过本地IP:10086访问该project, 比如我的IP地址是10.15.14.146, 我就可以使用http://10.15.14.146:10086/访问
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 访问结果如下图所示
    在这里插入图片描述
  • 这里可以访问/admin进行后台管理的访问, 如下图所示
    在这里插入图片描述

如果没有问题, 到此, django的基础框架就配置完毕, 接下来开始进行用户界面的配置, 注册, 登录

到此, 整个project的文件结构如下

(dj_test)$ tree
├── apps
│   └── user
│       ├── __init__.py
│       ├── admin.py 
│       ├── apps.py 
│       ├── migrations
│       │   ├── 0001_initial.py
│       │   ├── __init__.py
│       ├── models.py # 创建对应的数据库表
│       ├── tests.py
│       └── views.py # url请求处理中心
├── db
│   └── base_model.py # 数据库父类
├── db.sqlite3  #默认sqlite3的数据库
├── manage.py # 主函数
├── static # 存放静态文件的文件夹
├── submission
│   ├── __init__.py
│   ├── asgi.py
│   ├── settings.py # 整个服务器的配置文件
│   ├── urls.py # 请求先通过这里
│   └── wsgi.py
└── template # 页面显示的模板, 所有的html都在这里

11 directories, 26 files
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

三. 使用gitee的代码

3.1 下载gitee

git clone https://gitee.com/nwu_zjq/django3.0.git
cd django3.0/01_模板创建/
source activate dj3

# 第一次需要
数据库创建dj_test
python manage.py makemigrations # 同步数据库
python manage.py migrate # 同步数据库
python manage.py createsuperuser # 创建超级管理员

# 运行
python manage.py runserver
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小舞很执着/article/detail/886021?site
推荐阅读
相关标签
  

闽ICP备14008679号