django項目環境搭建

本文轉載自: https://blog.csdn.net/xiaogeldx/article/details/89038299css

在碼雲平臺建立項目

版本控制的種類

  • 主要使用github(最主流)
    • 國內訪問速度慢
    • 託管私有項目收費
  • 國內通常使用碼雲gitee
    • 國內訪問速度快
    • 託管私有項目免費
  • 在公司中使用gitlab或者svn來搭建python

    建立步驟

  • 打開碼雲,註冊登陸
  • 建立public工程
    在這裏插入圖片描述
  • 新建項目
    在這裏插入圖片描述
  • 生成ssh公鑰(一直回車或選y覆蓋)
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
  • 克隆項目到本地
    • 複製SSH連接
      在這裏插入圖片描述
    • 克隆項目
      在這裏插入圖片描述mysql

      建立虛擬環境

  • 查詢系統本系統中安裝的Python版本linux

    ls -l /usr/bin/python*
  • 建立虛擬環境時須要指定Python版本git

    virtualenv -p python3.6 django_web
  • 進入虛擬環境,安裝django(目前最新版本2.2,這次安裝2.1.7版本)github

    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文件在這裏插入圖片描述web

      git和github

      git安裝配置

  • Linux安裝redis

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

    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
  • 碼雲中就出現了,你的本次寫的代碼

相關文章
相關標籤/搜索