django项目环境搭建

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/makesomethings/article/details/98113705

导读

今天起小编就开始学习使用django框架写项目,过程中会不断地整理笔记到这里,之后会将这些文章进行一些润色,然后整理到一个专栏中,喜欢学习django的小伙伴可以关注一下哦,该系列文章会从搭建环境开始,教你一步步完整地做完项目。

django项目环境搭建

本次项目环境

  • 平台:Ubuntu18.04
  • 语言:python3.6
  • 框架:Django2.1.10
  • 编译器:Pycharm

I. 在码云平台创建项目

为什么选择码云?

先来对比一下码云和Github的主要区别:

Github码云Gitee
最主流,使用人数最多一般为国人使用
国内访问速度较慢国内访问速度快
托管私有项目收费托管私有项目免费(限制开发人数)

由上得知,码云对于我们来说访问速度更快,具备这一点就足够了

1>创建步骤

在创建之前你需要拥有一个码云账号,如果没有请注册码云账号:点击此处注册

1.1>创建仓库
  1. 登录码云后,通过网站右上角的「+」号,选择「新建仓库」,进入新建仓库页面

  1. 填写仓库信息, 输入仓库名称/介绍, 并勾选公开(代表您的项目为开源), 选择语言添加 .gitignore为python, 代表该项目基于的开发语言, 开源许可证可选Apache-2.0

  2. 点击「创建」,即可在码云上创建你的第一个仓库。

1.2>生成ssh公钥

首先你要学会简单的使用Git,可以参考文档:Git的介绍及常见用法

  1. 打开Git Bash(安装好git之后开始菜单就会有),然后输入以下命令
ssh-keygen -t rsa -C 'youremail@email.com'

 
 
  • 1
  1. 按照提示完成三次回车,即可生成ssh key。通过查看~/.ssh/id_rsa.pub文件内容,获取到你的public key, 复制生成后的 ssh key,
cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc....

 
 
  • 1
  • 2
步骤参考图:
1.3>码云上填写公钥
  1. 将光标放在用户图标上, 然后选择设置
  2. 安全设置栏, 点击SSH公钥
  3. 将生成的公钥粘贴到公钥文本框, 并点击确定
  4. 会有登陆窗弹出并且要求输入码云账户的密码, 登陆
  5. 如果没问题,你将看到提示窗你已成功添加SSH公钥

1.4>(可选) 克隆项目到本地

如果本地没有建立项目,可以直接将git上的内容克隆到本地

  1. 复制ssh链接

  2. 克隆项目到虚拟机或者物理机都可以。

git clone git@gitee.com:wcflove/tztz.git

 
 
  • 1

1.5>(可选) 添加项目远程仓库

如果是先在本地建立了项目, 再在码云上创建远程仓库,那么操作如下。

  1. 首先cd到django项目根目录,然后创建git本地仓库

    cd ~/project/tzporject
    git init
    
       
       
    • 1
    • 2
  2. 然后添加远程仓库

    git remote add origin  git@gitee.com:wcflove/tztz.git
    
       
       
    • 1

II. 创建django项目

前提条件

创建虚拟环境之前要确保当前的python默认版本使用的是python3

# 查询系统本系统中安装的python版本
ls -l /usr/bin/python*

 
 
  • 1
  • 2

# 系统中python默认版本为python2.7,可以将其修改为python3
# 第一步:先删除python
rm -rf /usr/bin/python
# 第二步:创建软链接
ln -s /usr/bin/python3 /usr/bin/python
# 第三步:查看python版本是否修改为python3
python -V

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

1>创建python虚拟环境

在虚拟机上创建python虚拟环境,因为实际项目部署在linux

mkvirtualenv -p /usr/bin/python3.6 tzproject

 
 
  • 1

2>创建django项目

2.1>安装django

选择安装django2.1.x最新的一个版本2.1.10

pip install django==2.1.10

 
 
  • 1

Django 2.1.10

2.2>创建django项目

方式一
cd到你想放django项目路径的地方

cd ~/project/
django-admin startproject <projectname>

 
 
  • 1
  • 2

方式二
在该命令后添加路径, 就可以指定文件夹为django项目的根目录

# '.'点表示当前文件夹, 这个命令一般用在手动指定django的项目路径
django-admin startproject <projectname> .

 
 
  • 1
  • 2

3>创建pycharm项目

通过pycharm远程连接虚拟机中的项目,开发。

3.1>选择项目目录

选择你要存放项目文件的目录,注意django项目和pycharm项目的根目录一定要保持一致,不要用一个pycharm的项目,管理多个django项目。

3.2>配置远程解释器

配置刚才创建的虚拟解释器



3.3>配置远程项目路径

3.4>设置同步配置



1564557842637.png





3.5>下载代码


4>pycharm配置Django项目

代码下载后,就需要将在pycharm中将项目配置成django项目,以便使用pycharm的各种便捷提示功能。
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

[外链图片转存失败(img-vlaRiRTc-1564668503295)(项目环境搭建.assets/1564559357677.png)]
做好虚拟机端口映射,在浏览器里输入http://127.0.0.1:8000你应该看到下面的画面
[外链图片转存失败(img-AxzcC9Ns-1564668503296)(项目环境搭建.assets/1564559484056.png)]

III. django项目设置

1>配置模板文件
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        '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',
            ],
            # 将模板标签内置到模板中 https://docs.djangoproject.com/en/2.1/topics/templates/
            'builtins': ['django.templatetags.static'],
        },
    },
]

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
2>配置mysql数据库
2.1>登录mysql
mysql -uroot -pqwe123

 
 
  • 1
2.2>创建数据库
mysql> CREATE DATABASE tzproject CHARSET=utf8mb4;
Query OK, 1 row affected (0.00 sec)

 
 
  • 1
  • 2

utf8md4是一种基于utf-8的编码方式,其兼容性优于utf-8,详情见:mysql中utf8与utf8mb4的区别及转化方法

2.3>创建用户
mysql> CREATE USER 'username'@'%' IDENTIFIED BY 'password';
Query OK, 1 row affected (0.00 sec)

 
 
  • 1
  • 2
2.4>授权
mysql> grant all privileges on tzproject.* to 'username'@'%';
Query OK, 0 rows affected (0.03 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.02 sec)
# 授权创建一起写
grant all privileges on tzproject.* to 'username'@'%' indentified by 'password'

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

%表示允许所有域名访问

2.5>配置settings
方法一, 直接引入

直接在settings.py文件中添加数据库配置信息

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',               # 数据库引擎
        'NAME': 'tzproject',                                # 数据库名
        'USER': 'username',                                  # 用户名
        'PASSWORD': 'password',                            # 密码
        'HOST': '127.0.0.1',                                # 主机IP
        'PORT': 3306                                        # 端口
    }
}

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
方法二, 外部文件引入

将数据库配置信息存到一个文件,在settings文件中将其引入。(推荐)

新建数据库配置文件db.cnf(名字随意, 但必须为cnf结尾), 参考文档:MySQL配置文件my.cnf的理解

[外链图片转存失败(img-3FrELbDk-1564668503296)(项目环境搭建.assets/1562163334474.png)]
db.cnf文件内容:

[client]
database = tzproject
user = dj_user
password = pythonvip
host = 127.0.0.1
port = 3306
default-character-set = utf8

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在settings.py文件中引入db.cnf

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'OPTIONS':{
            'read_default_file': 'utils/db/db.cnf'
        }
    }
}

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

官方文档:Connecting to the database

3>安装mysql数据库的python驱动

⚠️mysql数据库配置完成后,运行django服务会报如下错误,官方推荐安装mysqlclient1.3.7以上版本,也可以安装pymysql,并且需要在settings.py文件所在目录包中的__init__.py中导入pymysql。

[外链图片转存失败(img-oTsNZFZE-1564668503296)(项目环境搭建.assets/1562163955724.png)]

方案一,安装mysqlclient

首先更新ubuntu

sudo apt-get update 

 
 
  • 1

然后安装依赖库

sudo apt-get install default-libmysqlclient-dev

 
 
  • 1

再切换到虚拟环境中

workon tzproject

 
 
  • 1

最后安装mysqlclient

pip install mysqlclient -i https://pypi.doubanio.com/simple

 
 
  • 1
方案二,安装pymysql

安装pymysql可以使用pip install pymysql, 网不好的可以使用如下代码:

pip install pymysql -i https://pypi.doubanio.com/simple

 
 
  • 1

然后在settings.py文件所在目录下的__init__.py导入

[外链图片转存失败(img-501y9nw3-1564668503297)(项目环境搭建.assets/1562165881739.png)]

数据库驱动推荐使用第一种方式,mysqlclientpymysql更快更安全,官方推荐。

2.1.7只能用pymysql方法, 不能用mysqlclient, 2.2开始就用不了pymysql了

4>配置redis缓存

用于存放用户session信息,以及需要缓存的各种信息。

# 在虚拟机中安装django-redis
pip install django-redis	

 
 
  • 1
  • 2
# settings.py文件中指定redis配置
 """ 配置redis数据库
为了给用户的session信息,短信和图片验证码提供一个缓存的空间,我们需要提供一个缓存类数据库用来缓存我们的验证数据
这么做同样也是给mysql数据库减轻负重
这里我们使用redis数据库来完成缓存验证信息的目标
"""
CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",     # redis缓存引擎
        # 指定redis所在的地址, 默认端口6379, 0代表数据库的索引
        "LOCATION": "redis://127.0.0.1:6379/0",     
        "OPTIONS": {    # 指定需要使用redis的client类
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    },
    'session': {
        'BACKEND': 'django_redis.cache.RedisCache',
        'LOCATION': 'redis://127.0.0.1:6379/1',
        'OPTIONS': {
            'CLIENT_CLASS': 'django_redis.client.DefaultClient',
        }
    },
}

# session存储缓存设置
SESSION_ENGINE = ‘django.contrib.sessions.backends.cache’
SESSION_CACHE_ALIAS = ‘session’

  • 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

文档地址:django-redis 中文文档

django官方文档:Using cached sessions

5>配置日志器

用于记录系统运行过程中的各种日志信息。

在项目根目录中创建一个logs文件夹,用于存放日志文件

# 在setting.py文件中加入如下配置:
# 配置日志器
LOGGING = {             # 表示放在logging的参数里面已字典的形式存在
    'version': 1,       # 版本号固定, 表示django在解读配置信息时里面的键值对参数名有特定的含义,默认自己实现,版本号为1.
    'disable_existing_loggers': False,      # 表示是不是要禁止已经存在的日志器, 在其他地方也有配置日志器.
    'formatters': {             # 表示日志输出的格式
        'verbose': {            # 表示复杂点的格式
            'format': '%(levelname)s %(asctime)s %(module)s %(lineno)d %(message)s'
        },  # levelname日志等级,asctime记录时间,module记录的模块,lineno行号,message具体日志信息
        'simple': {             # 表示简单格式
            #  表示他的等级在模块的第几行出现的信息
            'format': '%(levelname)s %(module)s %(lineno)d %(message)s'
        },
    },
    'filters': {            # 过滤器, 表示是否屏蔽在其他地方输出的日志信息. django默认不做任何屏蔽
        'require_debug_true': {
            '()': 'django.utils.log.RequireDebugTrue',  # 过滤器,保留debug及以上的日志
        },
    },
    'handlers': {       # 代表处理器
        'console': {        # 终端,对终端中日志显示的设置
            'level': 'DEBUG',       # debug级别以上的都可以写
            'filters': ['require_debug_true'],  # 过滤器,保留debug及以上的日志
            'class': 'logging.StreamHandler',   # 流处理器
            'formatter': 'simple'   # 使用简单格式,上面formatters定义的
        },
        'file': {           # 文件,对文件中日志显示的设置
            'level': 'INFO',
            'class': 'logging.handlers.RotatingFileHandler',
            # BASE_DIR 指的是里面内嵌的test_pr 目录
            'filename': os.path.join(BASE_DIR, "logs/news.log"),  # 日志文件的位置
            'maxBytes': 300 * 1024 * 1024,          # 每个文件的最大值,满了自动产生新文件
            'backupCount': 10,                      # 保留多少个文件
            'formatter': 'verbose'      # 当保存的文件达到最大时,之后的文件会自动对之前的进行覆盖
        },
    },
    # 本次项目中所使用的日志器在这配置
    'loggers': {        # 创建logger日志器的对象,是通过配置方式创建,不是真定义
        'django': {     # 定义了一个名为django的日志器
            'handlers': ['console', 'file'],        # 可以往终端和文件里面写
            'propagate': True,      # 表示django日志器执行完后还可以再传递,别的日志器也可以再使用
            'level': 'INFO',    # info级的日志会被记录
        },
    }
}

 
 
  • 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

使用方法

# 使用方法
# import the logging library
import logging

# Get an instance of a logger
# 此处的django为: settings.py文件中LOGGING配置下的loggers中定义的日志器名称
logger = logging.getLogger(‘django’)

def my_view(request, arg1, arg):
...
if ***:
# Log an error message
logger.error(‘Something went wrong!’)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

官方文档:Logging

6>时区配置
# Internationalization
# https://docs.djangoproject.com/en/2.1/topics/i18n/

LANGUAGE_CODE = ‘zh-hans’ # 优先显示的语言

TIME_ZONE = ‘UTC’ # 显示的时区

USE_I18N = True # 是否应该启用Django的翻译系统, 也可以为了提高使用性能,将其关闭

USE_L10N = True # 是否启用本地化

USE_TZ = True # 是否支持时区

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
7>静态文件配置

在项目根目录创建一个static目录,用于存放静态文件(css, js, image, font等)

STATIC_URL = '/static/'     # 设置静态文件路径
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),   # 用于存放静态文件
]

 
 
  • 1
  • 2
  • 3
  • 4
8>创建应用

a. 本项目主要由4个模块组成,分别为新闻文章模块,课程视频播放模块,文档下载模块,用户管理模块等。在项目根目录下创建一个apps目录用于存放各子应用。

[外链图片转存失败(img-6HJMntd2-1564668503297)(项目环境搭建.assets/1562212479154.png)]

b. 然后cd到apps目录创建各子应用

~$ cd ~/code/tztz/apps/
~/code/tztz/apps$ workon tzproject
(tzproject) ~/code/tztz/apps$ python ../manage.py startapp news
(tzproject) ~/code/tztz/apps$ python ../manage.py startapp course
(tzproject) ~/code/tztz/apps$ python ../manage.py startapp doc
(tzproject) ~/code/tztz/apps$ python ../manage.py startapp user

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

c. 再到settings文件中,加入如下设置

import sys

# 创建应用之后,把apps目录加入到sys.path中, 目的是让我们可以直接使用app名访问app
sys.path.insert(0, BASE_DIR)
sys.path.insert(1, os.path.join(BASE_DIR, ‘apps’))

  • 1
  • 2
  • 3
  • 4
  • 5

d. 接着分别在apps文件夹和项目根目录文件夹上右键,加入到Source Root中,优化导入路径(pycharm提示)。

在这里插入图片描述

e. 最后将应用添加到INSTALLED_APPS列表中

INSTALLED_APPS = [
	# ...
    'user',	# 将应用加入到INSTALLED_APPS列表中
    'news',
    'doc',
    'course'
]

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

IIII. 将项目推送到码云

手动同步代码(更保险),然后运行django服务,检查无误后就可以提交代码,然后推送到码云了

1>编写.gitignore文件

为了让git的运行速度更快,有些不需要添加到仓库的文件比如pycharm的项目设置文件.idea文件夹,可以通过.gitignore文件来设置忽略.idea文件夹, 在.gitignore文件的最后加上下面两行

....
# pycharm
.idea/

 
 
  • 1
  • 2
  • 3

2>配置好推送人的身份信息

2.1>配置全局身份
$ git config --global user.name "jax"
$ git config --global user.email "jax@qq.com"

 
 
  • 1
  • 2

如果用了 --global 选项,那么更改的配置文件就是位于你用户主目录下的那个,以后你所有的项目都会默认使用这里配置的用户信息。如果要在某个特定的项目中使用其他名字或者电邮,只要去掉 --global 选项重新配置即可,新的设定保存在当前项目的 .git/config 文件里。详见: 初次运行 Git 前的配置

2.2>配置项目特定身份
$ git config user.name "jax"
$ git config user.email "jax@qq.com"

 
 
  • 1
  • 2

3>将代码推送至本地仓库

# 工作区添加到暂存区
$ git add .
# 暂存区提交到仓库
$ git commit -m 'project init'

 
 
  • 1
  • 2
  • 3
  • 4

4>将代码推送到码云

$ git push origin master

 
 
  • 1

注意,如果出现,推送失败就需要运行强推

$ git push -f origin master

 
 
  • 1

码云中就出现了,你本次写的代码

[外链图片转存失败(img-IrFlqeuW-1564668503298)(项目环境搭建.assets/1562219313956.png)]
到此,django项目的创建与部署就完成了,接下来就是模板抽取和代码编写,见下一篇文章

本项目为作者原创,转载请注明出处https://blog.csdn.net/makesomethings/article/details/98113705

                                </div>
            <link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-095d4a0b23.css" rel="stylesheet">
                </div>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值