• django项目环境搭建


    本文转载自: https://blog.csdn.net/xiaogeldx/article/details/89038299

    在码云平台创建项目

    版本控制的种类

    • 主要使用github(最主流)
      • 国内访问速度慢
      • 托管私有项目收费
    • 国内一般使用码云gitee
      • 国内访问速度快
      • 托管私有项目免费
    • 在公司中使用gitlab或者svn来搭建

    创建步骤

    • 打开码云,注册登录
    • 创建public工程
      在这里插入图片描述
    • 新建项目
      在这里插入图片描述
    • 生成ssh公钥(一直回车或选y覆盖)
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
    • 克隆项目到本地
      • 复制SSH链接
        在这里插入图片描述
      • 克隆项目
        在这里插入图片描述

    创建虚拟环境

    • 查询系统本系统中安装的Python版本

        ls -l /usr/bin/python*
      
    • 创建虚拟环境时需要指定Python版本

        virtualenv -p python3.6 django_web
      
    • 进入虚拟环境,安装django(目前最新版本2.2,此次安装2.1.7版本)

        source activate
        pip install django==2.1.7
      

    在这里插入图片描述

    pycharm配置(django)

    • 复制粘贴以前的贴,步骤一样,图片和内容与本次项目不符
    1. 配置解释器(默认已在云服务器创建好django项目:stu_sys)
      创建项目-Create New Project
      在这里插入图片描述
      Location位置创建本地的项目文件夹
      选择Interpreter的最右边的...,配置解释器
      在这里插入图片描述
      1. 配置远程服务器
        填云服务器的ip,用户名和密码
        在这里插入图片描述
        选择远程的解释器
        在这里插入图片描述
        在Remote project location选择远程的项目文件夹,点创建
        在这里插入图片描述
        配置代码同步,File的Settings的Deployment,填上ip,端口号,用户名,密码,然后Test Connection连接测试,成功后选择Root path:远程项目的文件夹(或者把Mappings的Deployment path的地址剪切过来)
        在这里插入图片描述
        Mappings的Deployment path的路径为/
        在这里插入图片描述
        Deployment的Options的Upload changed选Always,一直自动上传在这里插入图片描述
        选择编辑器右上角的Edit Configuration的按钮
        点击添加Django server
        改Host为0.0.0.0,表示的是允许连接服务器的IP #方便调试,使用什么ip都能访问到
        点击Environment Variables项后面的…
        将DJANGO_SETTINGS_MODULE添加到Name,将项目名.settings添加到Value
        在apply按钮上有可能fix有红灯标志,点进去
        在这里插入图片描述
        把Enable Django Support勾选上,Django project root行点文件夹标志,选上根目录,Settings行点文件夹标志,选上根目录下的settings.py文件在这里插入图片描述

    git和github

    git安装配置

    • Linux安装

        apt-get install libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev
        apt-get install git
        git --version		#查看版本
      
    • 配置用户

        git config --global user.name 用户名
        git config --global user.email 邮箱
      
    • 查看配置信息

        git config --list
      

    github

    • git连接github,本地git仓库和github仓库之间的传输是通过SSH加密的

    • 使用以下命令生成SSH Key:

        ssh-keygen -t rsa -C "邮箱"		#注意有引号#邮箱是github注册的邮箱
      
    • 一直回车就行,成功的话会在~/下生成.ssh文件夹,进去,打开 id_rsa.pub,复制里面的 key

        cd ~
        cd .ssh
        cat id_rsa.pub		#复制key
      
    • 在github上,选择Settings
      在这里插入图片描述

    • 选SSH and GPG keys,选New SSH key
      在这里插入图片描述

    • Title随意填,Key把前面复制的key粘贴到这里
      在这里插入图片描述

    • 为了验证是否成功用如下代码

        ssh -T git@github.com	#成功会显示github名
      
    • 选择下图中的New repository
      在这里插入图片描述

    • 在Repository Name中填github中的项目名,其他默认
      在这里插入图片描述

    • 创建一个和github的项目名相同的git本地仓库的文件夹,然后进入文件夹

        #下面这些代码是复制图中的第二种方法的代码
        echo "# hahaah" >> README.md
        git init
        git add README.md
        git commit -m "first commit"
        git remote add origin git@github.com:xiaogeldx/hahaah.git
        git push -u origin master
      

    在这里插入图片描述

    pycharm配置git和github

    • File-Settings-Version Control-Git,Path to Git executable,选择git包的路径
      在这里插入图片描述
    • GitHub,登录github账号
      在这里插入图片描述
    • VCS-Checkout from Version Control,url添加github的远程仓库
      在这里插入图片描述
    • 先在命令行创建项目,然后再设置pycharm代码同步

    项目创建和配置

    • 新建项目的命令:django-admin startproject projectname

    开发服务器

    1. 将settings.py文件中的ALLOWED_HOSTS = 改为ALLOWED_HOSTS = ["*"]
    2. Linux虚拟机网络连接方式是nat端口转发时,需要设置http服务8000端口的转发

    开启服务器

    • 方式一(不常用):
      命令行模式:
      在项目的根目录下执行命令
      python manage.py runserver 0.0.0.0:8000 #0.0.0.0可以简写为0
    • 方式二(常用):
      1. 选择编辑器右上角的Edit Configuration的按钮
      2. 点击添加Django server
      3. 改Host为0.0.0.0,表示的是允许连接服务器的IP #方便调试,使用什么ip都能访问到
      4. 点击Environment Variables项后面的...
      5. 将DJANGO_SETTINGS_MODULE添加到Name,将项目名.settings添加到Value
      6. 在apply按钮上有可能fix有红灯标志,点进去,把Enable Django Support勾选上,Django project root行点文件夹标志,选上根目录,Settings行点文件夹标志,选上根目录下的settings.py文件
        在这里插入图片描述

    访问服务器

    1. 当用其中的一种方式开启了服务后,打开浏览器
    2. 在地址栏输入IP地址和服务的端口号
    3. 可以看到服务正在运行的页面
      在这里插入图片描述
    • 需要注意的点:
      • IP:
        • 在终端用命令ifconfig查看IP,注意网络连接方式
        • 虚拟机的端口转发时使用的是127.0.0.1回环地址
      • port
        • 远程连接ssh服务的端口号是22
        • http服务端口号8000/8080
        • MySQL服务的端口号3306

    其他配置

    修改 settings 文件

    配置模板文件

    • 在项目根目录新建一个templates文件夹,用于存放模版文件。
    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'],
            },
        },
    ]
    

    配置mysql数据库

    • 连接虚拟机中的mysql,使用root用户登录:
    mysql -uroot -p
    
    • 创建数据库
    mysql> CREATE DATABASE web_prv CHARSET=utf8;
    Query OK, 0 rows affected (0.13 sec)
    
    • 创建用户
    mysql> CREATE USER root IDENTIFIED BY 'xxxx';
    Query OK, 0 rows affected (0.00 sec)
    
    • 用户授权
    mysql> GRANT ALL PRIVILEGES ON web_prv.* TO 'root'@'%';
    mysql> FLUSH PRIVILEGES;
    Query OK, 0 rows affected (0.20 sec)
    
    • 加载数据库配置
      • 方法一:直接在settings.py文件中添加数据库配置信息
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',   # 数据库引擎
            'NAME': 'web_prv',                       # 数据库名称
            'USER': 'root',                      # 数据库登录用户名
            'PASSWORD': 'xxxx',                # 密码
            'HOST': 'x.x.x.x',                # 数据库主机IP,如保持默认,则为127.0.0.1
            'PORT': 3306,                           # 数据库端口号,如保持默认,则为3306
        }
    }
    
    • 方法二:将数据库配置信息存到一个文件中,在settings.py文件中将其引入(推荐)
      • 新建数据库配置文件my.cnf(名字随意选择)
      • 在settings.py文件中引入my.cnf文件
    DATABASES = {
        # 方法二:
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'OPTIONS': {
                'read_default_file': 'utils/dbs/my.cnf',
            },
        }
    }
    
    • 在项目根目录新建utils文件夹,用于存放一些配置,在utils文件夹下新建dbs文件夹(存放数据库配置),在dbs文件夹下新建my.cnf文件

    • my.cnf

        [client]
        database = web_prv
        user = root
        password = xxxx
        host = x.x.x.x
        post = 3306
        default-character-set = utf8
      
    • 安装pymysql,并且需要在settings.py文件所在包中的__init__.py中导入pymysql

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

    在这里插入图片描述

    配置redis缓存

    • 用于存放用户session信息、短信验证码以及图片验证码信息等。
    # 在虚拟机中安装django-redis
    pip install -i https://pypi.douban.com/simple django-redis
    
    # 在settings.py文件中指定redis配置
    CACHES = {
        "default": {
            "BACKEND": "django_redis.cache.RedisCache",
            "LOCATION": "redis://106.13.131.178:6379/0",
            "OPTIONS": {
                "CLIENT_CLASS": "django_redis.client.DefaultClient",
            }
        },
        #这样的库可以建多个,除了名字和路径不同,其他一样
        # "verity_codes": {
        #     "BACKEND": "django_redis.cache.RedisCache",
        #     "LOCATION": "redis://106.13.131.178:6379/1",
        #     "OPTIONS": {
        #         "CLIENT_CLASS": "django_redis.client.DefaultClient",
        #     }
        # } 
    }
    

    配置日志器

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

    • 在项目根目录中创建一个logs文件夹,用于存放日志文件,并在文件夹下新建__init__.py文件,使其变成Python的包用于导入

    • 新建web_prv.log文件

        #在setting.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.utils.log.RequireDebugTrue',
                },
            },
            'handlers': {
                'console': {
                    'level': 'DEBUG',
                    'filters': ['require_debug_true'],
                    'class': 'logging.StreamHandler',
                    'formatter': 'simple'
                },
                'file': {
                    'level': 'INFO',
                    'class': 'logging.handlers.RotatingFileHandler',
                    'filename': os.path.join(BASE_DIR, "logs/web_prv.log"),  # 日志文件的位置
                    'maxBytes': 300 * 1024 * 1024,
                    'backupCount': 10,
                    'formatter': 'verbose'
                },
            },
            'loggers': {
                'django': {  # 定义了一个名为django的日志器
                    'handlers': ['console', 'file'],
                    'propagate': True,
                    'level': 'INFO',  # 日志器接收的最低日志级别
                },
            }
        }
      

    时区配置

    # 修改语言
    LANGUAGE_CODE = 'zh-hans'
    # 修改时区
    TIME_ZONE = 'Asia/Shanghai'
    USE_I18N = True
    USE_L10N = True
    # utc 时间
    USE_TZ = True
    

    修改静态文件配置

    • 在项目根目录中创建一个static目录,用于存放静态文件(css、js、image、font等)
    STATIC_URL = '/static/'
    STATICFILES_DIRS = [
        os.path.join(BASE_DIR, 'static'),	# 用于存放静态文件
    ]
    

    创建应用

    • 本项目主要由4个模块组成,分别为新闻文章模块、课程视频播放模块、文档下载模块、用户管理模块等
    • 在项目根目录下创建一个apps目录用于存放各个子应用
    # 在Ubuntu中,cd到项目根目录
    cd apps
    python manage.py startapp news1
    python manage.py startapp course
    python manage.py startapp doc
    python manage.py startapp users
    
    • 或者用这种方法也可以创建app
      • pycharm的Tools-->Run manage.py Task...

          startapp appname
        

    在这里插入图片描述

    • 创建python的包apps,将创建的app拖到apps中
    • 在settings.py文件中,加入如下配置
    import sys
    # 创建应用之后,把apps目录加入到sys.path中
    #使apps可以进行查找
    sys.path.insert(0, BASE_DIR)
    sys.path.insert(1, os.path.join(BASE_DIR, 'apps'))
    
    • 分别在apps文件夹和项目根目录文件夹上右击,加入到Sources Root根中,优化导入路径。
    • 将应用加入到INSTALLED_APPS列表中
    INSTALLED_APPS = [
        # ...
        'users',  # 将应用加入到INSTALLED_APPS列表中
        'course',
        'doc',
        'news',
    ]
    
    • 将apps设置为可查找
      • apps右键-->Mark Directory as Sources Root

    将项目推送到码云

    • 在虚拟机中配置代码推送人身份信息(填写自己的名字和邮箱地址)
      # 填写你的邮箱地址
      (tk_dj) pyvip@VIP:~/TK19_3/tk_dj/.git$ git config --global user.email "xxx@qq.com"
      
      # 填写你的用户名
      (tk_dj) pyvip@VIP:~/TK19_3/tk_dj/.git$ git config --global user.name "xiaogeldx"
      
    • 将代码推送至本地仓库(虚拟机中)
      # 工作区添加到暂存区
      (tk_dj) pyvip@VIP:~/TK19_3/tk_dj$ git add .
      
      # 暂存区提交到仓库区,-m为添加注释信息
      (tk_dj) pyvip@VIP:~/TK19_3/tk_dj$ git commit -m "项目初始化,完成settings中数据库、模板、时区、静态目录指定等。"
      
    • 将代码推送至远程仓库(码云上)
      # 将代码推送到远程仓库
      (tk_dj) pyvip@VIP:~/TK19_3/tk_dj$ git push
      
    • 码云中就出现了,你的本次写的代码
  • 相关阅读:
    android ndk 调试问题
    音频
    文件分割与c语言文件结
    本机抓包
    rtm匹 转
    mac 工具等效率
    【MySQL】Explain Tutorial
    Sed基本入门[5] Sed Hold and Pattern Space Commands
    Sed基本入门[3] Regular Expressions
    Protocol Buffer Basics
  • 原文地址:https://www.cnblogs.com/xiaogeldx/p/10687419.html
Copyright © 2020-2023  润新知