**
简单的Django项目创建流程(你值得拥有 )
**
一,项目创建(码云)
目的: 可以在gitee上面创建项目, clone到本地管理(项目名称)项目
- 操作流程:
- 1, 登录到码云创建仓库
- 2, clone仓库到本地
- 3, 进入到仓库, 创建项目
- 4, 上传项目到远程仓库
- 注意点:
- .gitignore作用: 忽略不需要使用git管理的文件
- 注意点2:
- 1, 配置仓库的目录, 在pycharm中
2, 使用VCS进行提交测试## 功能快捷键
- 1, 配置仓库的目录, 在pycharm中
二、开发环境配置
-
目的: 可以配置项目的两套运行环境
-
操作流程:
-
1,创建settings包, 创建dev.py, 创建prod.py文件
-
2, 修改启动加载的配置文件(manage.py)
-
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "meiduo_mall.settings.dev")
-
-
-
注意点:(先运行,再配置)
三、jinja2模板引擎
-
目的: 能够配置jinja2的模板语法
-
操作流程:
-
1, 创建templates文件夹
-
2, 配置相关的模板语法(meiduo_mall/settings/dev.py)
-
TEMPLATES = [ { 'BACKEND': 'django.template.backends.jinja2.Jinja2', # 加载jinja2引擎 'DIRS': [os.path.join(BASE_DIR,'templates')], #模板存储位置 ... 'OPTIONS': { 'environment':'meiduo_mall.utils.my_jinja2.environment', #设置全局的环境变量方法 ... ], }, }, ]
-
-
3, 配置全局方法(meiduo_mall/utils/my_jinja2.py)
-
from __future__ import absolute_import # Python 2 only from django.contrib.staticfiles.storage import staticfiles_storage from django.urls import reverse from jinja2 import Environment def environment(**options): env = Environment(**options) env.globals.update({ 'static': staticfiles_storage.url, # static方法 'url': reverse, #url方法 }) return env
-
-
四,mysql配置
-
目的: 可以参考官方文档, 配置数据库
-
操作流程:
-
1, 配置数据库连接信息(meiduo_mall/settings/dev.py)
-
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'meiduo17', 'USER': 'root', 'PASSWORD': '123456', 'HOST': '127.0.0.1', 'PORT': '3306', } }
-
-
2, 创建数据库(在终端创建即可)
-
3, 配置pymysql作为驱动(meiduo_mall/init.py)
-
# 配置pymysql作为mysql的驱动 import pymysql pymysql.install_as_MySQLdb()
-
-
五、配置redis数据库
-
目的: 参考文档, 配置redis, 用于以后的缓存信息
-
操作流程:
-
1, 配置redis存储信息(meiduo_mall/settings/dev.py)
-
# redis配置 CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379/1", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", } }, "session": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379/0", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", } } } # session状态保持信息存储位置 SESSION_ENGINE = "django.contrib.sessions.backends.cache" SESSION_CACHE_ALIAS = "session"
-
六、日志工程的配置
-
目的: 可以配置日志信息, 记录用户的访问行为, 或者程序运行的行为
-
操作流程:
-
1, 日志配置(dev.py)
-
# 日志 LOGGING = { 'version': 1, 'disable_existing_loggers': False, # 是否禁用已经存在的日志器 'formatters': { # 日志信息显示的格式 'verbose': { 'format': '%(levelname)s %(asctime)s %(module)s %(lineno)d %(message)s' }, 'simple': { 'format': '%(levelname)s %(module)s %(lineno)d %(message)s' }, }, 'filters': { # 对日志进行过滤 'require_debug_true': { # django在debug模式下才输出日志 '()': 'django.utils.log.RequireDebugTrue', }, }, 'handlers': { # 日志处理方法 'console': { # 向终端中输出日志 'level': 'INFO', 'filters': ['require_debug_true'], 'class': 'logging.StreamHandler', 'formatter': 'simple' }, 'file': { # 向文件中输出日志 'level': 'INFO', 'class': 'logging.handlers.RotatingFileHandler', 'filename': os.path.join(os.path.dirname(BASE_DIR), 'logs/meiduo.log'), # 日志文件的位置 'maxBytes': 300 * 1024 * 1024, 'backupCount': 10, 'formatter': 'verbose' }, }, 'loggers': { # 日志器 'django': { # 定义了一个名为django的日志器 'handlers': ['console', 'file'], # 可以同时向终端与文件中输出日志 'propagate': True, # 是否继续传递日志信息 'level': 'INFO', # 日志器接收的最低日志级别 }, } }
-
-
2,
-
七、静态文件集成
-
目的: 可以将项目中用到的静态文件集成到工程中
-
操作流程:
-
1, 配置静态文件存储位置(dev.py)
-
# 配置静态文件资源存储位置的(绝对路径) STATICFILES_DIRS = [ os.path.join(BASE_DIR,'static') ]
-
-
八、创建用户模块子应用
-
目的: 可以在apps中创建子应用
-
操作流程:
-
1, 在meiduo_mall根应用中创建apps包
-
2, 进入到apps中, 创建users子应用
-
python ../../manage.py startapp users
-
-
九、设置导包路径
-
目的: 可以将apps设置为导包路径
-
操作流程:
-
1, 导包路径配置(dev.py)
-
# 告诉pycharm apps作为导包路径, 当使用apps中的子应用的时候, 可以不需要写前缀,直接使用子应用名称即可 import sys sys.path.insert(0,os.path.join(BASE_DIR,'apps')) # print(sys.path) #导包路径 INSTALLED_APPS = [ ... # 'users', # 展开时候就是下面的形式 'users.apps.UsersConfig' ]
-
-
十、展示用户注册页面
-
目的: 可以编写类视图,展示注册页面
-
操作流程:
-
1, 根路由(urls.py)
-
url(r'^', include('users.urls'))
-
-
2, 子路由(users/urls.py)
-
from django.conf.urls import url from . import views urlpatterns = [ url(r'^register/$',views.RegisterView.as_view()) ]
-
-
3, 类视图(users/views.py)
-
from django.shortcuts import render from django.views import View # 1, 注册页面视图 class RegisterView(View): def get(self,request): return render(request,'register.html')
-
-
-
注意点:
- 需要将register.html移动到templates中
十一、用户模型类创建
-
目的: 可以定义用户模型类, 设置相关的属性
-
操作流程:
-
1, 定义模型类(users/models.py)
-
from django.db import models from django.contrib.auth.models import AbstractUser # 1,定义用户模型类 class User(AbstractUser): #1, 增加额外的属性 mobile = models.CharField(verbose_name="手机号",max_length=11,unique=True) #2, 指定表名信息 class Meta: db_table = "tb_users"
-
-
2, 配置自定义模型类(dev.py)
-
# 设置自定义的认证模型类 AUTH_USER_MODEL = 'users.User'
-
-
-
注意点:
- 集成系统AbstractUser的好处
- 1, AbstractUser提供了通用的属性, 比如: username ,password ….
- 2, AbstractUser提供了密码加密方法, 和校验方法
- 集成系统AbstractUser的好处
十二、用户模型类迁移
- 目的: 可以迁移用户表数据, 并知道系统当中的相关表的产生
- 操作流程:
- 1, python manage.py makemigrations
- 2 python manage.py migrate
十三(优惠大赠送)创建流程上帝视角
- 文件位置图例(有助于更好的整理项目路径及功能模块)
-流程操作思维导图(能让整个创建流程有序进行【按部就班】)
快去测试下,你新创建的项目是否成功了呢!