美多商城-day 01プロジェクト準備

7137 ワード

一、プロジェクト紹介
1、プロジェクト需要分析
プロダクトマネージャの仕事は、プログラマーが知っていればいいです.
2、プロジェクトアーキテクチャ設計
アーキテクチャの仕事は、プログラマーが理解すればいい.
二、工事の作成と配置
1、コード倉庫の作成
1、githubまたはコードクラウドを選択して管理プロジェクトの倉庫を作成する2、簡単なhttpを使用してローカルにクローンする(口座名とパスワードはサイトの後ろのpushにログインするときに使う)3、クローンされた倉庫フォルダの下に入り、仮想環境を作成し、django 4をインストールし、django-adminでmeiduoプロジェクトを作成する
2、開発環境の配置
ファイルディレクトリの説明第1階倉庫プロジェクト第2階ショッピングモールプロジェクト第3階プロジェクトの主な応用は第3階のディレクトリ構造の同級ディレクトリと下級ディレクトリに注意する必要がある.
└── meiduo_project
    └── meiduo_mall
        ├── __init__.py
        ├── manage.py
        ├── meiduo_mall
        │   ├── __init__.py
        │   ├── settings
        │   │   ├── dev.py
        │   │   ├── __init__.py
        │   │   └── prod.py
        │   ├── urls.py
        │   └── wsgi.py
        └── templates

1、構成開発環境と生産環境三級目次メインアプリケーションの下でsettingパッケージを新規作成した後、dev開発環境プロファイルをインポートしてprod生産環境プロファイル(いずれもpythonファイル)を作成する2、指定開発環境プロファイル既存のsettingファイルを削除manageファイルの中で最新の開発環境を構成する
3、Jinja 2テンプレートエンジンの構成
1.現在の仮想環境でのインストール
$ pip install Jinja2

2、開発環境構成のdevファイルでtemplatesオプションを構成する
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.jinja2.Jinja2',  # jinja2           
        'DIRS': [os.path.join(BASE_DIR, 'templates')],#   
        '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',
            ],
        },
    },
]

3、補足Jinja 2テンプレートエンジン環境三級主要応用の下でutilsパッケージを作成し、jiaja 2_を新規作成するenv.pyテンプレート環境構成コードの作成
from jinja2 import Environment
from django.contrib.staticfiles.storage import staticfiles_storage
from django.urls import reverse


def jinja2_environment(**options):
    env = Environment(**options)
    env.globals.update({
        'static': staticfiles_storage.url,
        'url': reverse,
    })
    return env


"""
            {
    { url('') }} {
    { static('') }}     
"""

テンプレートエンジン環境のロード
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.jinja2.Jinja2',  # jinja2    
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        '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',
            ],
            #   Jinja2      
            'environment': 'meiduo_mall.utils.jinja2_env.jinja2_environment', 
        },
    },
]

4、MySQLデータベースの構成
1、新しいMySQLデータベース①meiduoデータベースを作成しutf 8を指定する
$ create database meiduo charset=utf8;

②ユーザーの作成とパスワードの指定
$ create user itheima identified by '123456';

③作成ユーザへのアクセス権限
$ grant all on meiduo.* to 'itheima'@'%';

④特権の更新
$ flush privileges;

2、MySQLデータベースの構成
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', #      
        'HOST': '127.0.0.1', #      
        'PORT': 3306, #      
        'USER': 'itheima', #       
        'PASSWORD': '123456', #        
        'NAME': 'meiduo' #      
    },
}

3、pyMySQL拡張パッケージのインストール①pymysqlのインストール②devがあるパッケージのinitファイルに以下のコードを追加
from pymysql import install_as_MySQLdb


install_as_MySQLdb()

5.redisデータベースの構成
1、現在の仮想環境でdjango-redis拡張パッケージをインストールする2、redisデータベース構成キャッシュを構成する
CACHES = {
    "default": { #   
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/0",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    },
    "session": { # session
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/1",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    },
}
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "session"

6、工事ログの配置
1、工事ログの配置
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、ログファイルディレクトリを準備2級プロジェクトディレクトリの下でlogsフォルダを新規meiduo.logファイルを新規作成3、ログレコーダのimport loggingの使用
#        
logger = logging.getLogger('django')
#     
logger.debug('  logging  debug')
logger.info('  logging  info')
logger.error('  logging  error')

7、フロントエンドの静的ファイルの構成
1、静的ファイルを準備する2級プロジェクトディレクトリの下でstatic静的リソースフォルダを新規作成するこのフォルダの下にcss、image、js 2、静的ファイルロードパスを指定する開発環境で構成する
STATIC_URL = '/static/'

#           
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]