脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - python美多商城项目开发小结

python美多商城项目开发小结

2022-09-30 20:31皮阿玛 Python

这篇文章主要介绍了python美多商城项目开发小结,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

项目总览

创建虚拟环境

mkvirtualenv meiduo_malls

创建项目

django-admin startproject meiduo_malls

pip install django

运行项目

python manage.py runserver [127.0.0.1:9000]

 

1.项目开发模式

选项 技术选型
开发模式 前后端不分离
后端框架 Django + Jinja2模板引擎
前端框架 Vue.js

说明:

前后端不分离的开发模式,是为了提高搜索引擎排名,即SEO。特别是首页,详情页和列表页。
页面需要整体刷新:我们会选择使用Jinja2模板引擎来实现。
页面需要局部刷新:我们会选择使用Vue.js来实现。

 

2. 项目运行机制

python美多商城项目开发小结

 

3. 知识要点

1.项目开发模式

  • 前后端不分离,方便SEO。
  • 采用Django + Jinja2模板引擎 + Vue.js实现前后端逻辑。

2.项目运行机制

  • 代理服务:Nginx服务器(反向代理)
  • 静态服务:Nginx服务器(静态首页、商品详情页、...)
  • 动态服务:uwsgi服务器(美多商场业务场景)
  • 后端服务:MySQL、Redis、Celery、RabbitMQ、Docker、FastDFS、Elasticsearch、Crontab
  • 外部接口:容联云、QQ互联、支付宝

 

配置开发环境

美多商城项目的环境分为开发环境生产环境

开发环境:用于编写和调试项目代码。
生产环境:用于项目线上部署运行。

 

1. 新建配置文件

        开发环境 主应用中新建setting包,dev.py,将原来的settings.py内容复制进去

        然后修改manage.py的默认开发环境改为dev

python美多商城项目开发小结

python美多商城项目开发小结

 生产环境

wsgi.py中修改默认生产环境prod

"""
WSGI config for meiduo_malls project.
It exposes the WSGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/4.0/howto/deployment/wsgi/
 
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "meiduo_malls.settings.prod")
application = get_wsgi_application()

 

2. 配置jinja2模板引擎

pip install Jinja2

修改配置文件中的模板配置

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_malls.utils.jinja2_env.environment",
        },
    },
    {
        "BACKEND": "django.template.backends.django.DjangoTemplates",
        "DIRS": [],
]

主应用中添加utils包 ->jinja2_env.py

from django.templatetags.static import static
from django.urls import reverse
 
from jinja2 import Environment
def environment(**options):
    env = Environment(**options)
    env.globals.update({
        "static": static,
        "url": reverse,
    })
    return env
"""
确保可以使用模板引擎中的{{ url("") }} {{ static("") }}这类语句 
在配置模板处配置使用
此配置信息可在官网查找复制

最后一步配置pycharm,模板语言由django 改为jinja2

python美多商城项目开发小结

python美多商城项目开发小结

 ssh root@82.157.143.241 连接linux

 

 3.配置mysql

使用宝塔安装数据库

想要实现远程可以操控,腾讯云防火墙中添加规则3306,宝塔中防火墙也要添加放行端口3306

1.新建MySQL数据库:meiduo_mall

$ create database meiduo charset=utf8;

2.新建MySQL用户

$ create user itheima identified by "123456";

3.授权itcast用户访问meiduo_mall数据库

$ grant all on meiduo.* to "itheima"@"%";

4.授权结束后刷新特权

$ flush privileges;

配置数据库dev.py

# django数据迁移支持的MySQL5.6以上 Django框架生成的SQL语句不兼容MySQL5.5
# 以下代码兼容低版本MySQL
from django.db.backends.mysql.base import DatabaseWrapper
DatabaseWrapper.data_types["DateTimeField"] = "datetime"
 
DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.mysql", # 数据库引擎
        "HOST": "82.157.143.241", # 数据库主机
        "PORT": 3306, # 数据库端口
        "USER": "itheima", # 数据库用户名
        "PASSWORD": "123456", # 数据库用户密码
        "NAME": "meiduo" # 数据库名字
        # 采用数据库严格模式
        "OPTIONS": {
            "charset": "utf8mb4",
            "autocommit": True,
            "init_command": "SET sql_mode="STRICT_TRANS_TABLES"",
        }
    }
}

安装驱动

pip install PyMySQL

 工程的__init__.py中配置初始化

from pymysql import install_as_MySQLdb
install_as_MySQLdb()

 

4.配置redis

pip install django-redis

django-redis使用说明文档

点击进入文档

配置可以远程访问 /etc/redis.conf

#bind 127.0.0.1  ip注释掉

daemonize yes    后台运行

requirepass zndroid   设置密码

protected-mode no   保护模式设为no

远程访问的话记得宝塔和腾讯云都要放行6379端口

dos远程连接redis-cli -h 82.157.143.241 -a zndroid

CACHES = {
    "default": { # 默认
        "BACKEND": "django_redis.cache.RedisCache",
        #"LOCATION": "redis://127.0.0.1:6379/0",
        "LOCATION": "redis://:zndroid@82.157.143.241:6379/0",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    },
    "session": { # session
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://:zndroid@82.157.143.241:6379/1",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    },
}
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "session"

default:

  • 默认的Redis配置项,采用0号Redis库。

session:

  • 状态保持的Redis配置项,采用1号Redis库。

SESSION_ENGINE

  • 修改session存储机制使用Redis保存。

SESSION_CACHE_ALIAS:

  • 使用名为"session"的Redis配置项存储session数据

 

5.配置工程日志

配置文件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",  # 日志器接收的最低日志级别
        },
    }
}

且需要在项目的根目录中创建目录logs 创建meiduo.log文件和  .gitkeep文件(git的时候保证空目录也可以git过去)

python美多商城项目开发小结

python美多商城项目开发小结

此时git的时候logs文件夹是空目录,默认Git是不允许提交一个空的目录到版本库上的

此时使用.gitkeep允许提交空目录

python美多商城项目开发小结

使用方式

import logging
 
# 创建日志记录器
logger = logging.getLogger("django")
# 输出日志
logger.debug("测试logging模块debug")
logger.info("测试logging模块info")
logger.error("测试logging模块error")

 

 6.配置静态资源dev.py

STATIC_URL = "/static/"
 
# 配置静态文件加载路径
STATICFILES_DIRS = [os.path.join(BASE_DIR, "static")]

python美多商城项目开发小结

到此这篇关于python美多商城一的文章就介绍到这了,更多相关python美多商城内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/crazynzg/article/details/122812692

延伸 · 阅读

精彩推荐
  • Pythonpython如何读写csv数据

    python如何读写csv数据

    这篇文章主要为大家详细介绍了python如何读写csv数据,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    北门吹雪12622021-01-23
  • Pythonpython 多线程将大文件分开下载后在合并的实例

    python 多线程将大文件分开下载后在合并的实例

    今天小编就为大家分享一篇python 多线程将大文件分开下载后在合并的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    听雪声的春天3962021-04-17
  • PythonPython补齐字符串长度的实例

    Python补齐字符串长度的实例

    今天小编就为大家分享一篇Python补齐字符串长度的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    橙子伟6942021-04-20
  • Pythonpython opencv实现运动检测

    python opencv实现运动检测

    这篇文章主要为大家详细介绍了python opencv实现运动检测,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    河间老王7912021-03-15
  • PythonPython调用系统底层API播放wav文件的方法

    Python调用系统底层API播放wav文件的方法

    这篇文章主要介绍了Python调用系统底层API播放wav文件的方法,涉及Python使用pywin32调用系统底层API读取与播放wav文件的相关操作技巧,需要的朋友可以参考下...

    罗兵2112020-12-01
  • PythonPython图形绘制操作之正弦曲线实现方法分析

    Python图形绘制操作之正弦曲线实现方法分析

    这篇文章主要介绍了Python图形绘制操作之正弦曲线实现方法,涉及Python使用numpy模块数值运算及matplotlib.pyplot模块进行图形绘制的相关操作技巧,需要的朋友可...

    金明爱python15392020-12-28
  • Python为程序员和新手准备的8大Python开发工具

    为程序员和新手准备的8大Python开发工具

    Python 是一种开源编程语言,用于 Web 编程、数据科学、人工智能和许多科学应用。学习 Python 使程序员能够专注于解决问题,而不是专注于语法,其丰富的...

    马哥Linux运维4762020-12-22
  • Python一份python入门应该看的学习资料

    一份python入门应该看的学习资料

    关于python入门你应该看这些资料,帮助你快速入门python,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    脚本之家12742021-01-30