日报系统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;
其中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
二. 修改配置文件, 完成框架搭建
2.1 修改submission/init.py
import pymysql # 因为这里用到的是mysql
pymysql.install_as_MySQLdb()
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"
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
- 编辑
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
- 编辑
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
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.
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/访问
- 访问结果如下图所示

- 这里可以访问/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
三. 使用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
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)