1. 程式人生 > 實用技巧 >Django---子框架drf專案---路飛學城---前後端搭建

Django---子框架drf專案---路飛學城---前後端搭建

目錄


劉老師部落格

pip換源

永久配置安裝源

windows:

檔案管理器敲%APPDATA%,進去之後新建pip資料夾,建立pip.ini配置檔案,檔案內容:

[global]
index-url = http://pypi.douban.com/simple
[install]
use-mirrors =true
mirrors =http://pypi.douban.com/simple/
trusted-host =pypi.douban.com

虛擬環境搭建

#優點
1 使用不同應用開發環境相互獨立
2 環境升級不影響其他應用、不會衝突全域性的python環境
3 防止出現包管理混亂及版本衝突
windown:
#建議使用pip3安裝到python環境下
pip3 install virtualenv
pip3 install virtualenvwrapper-win
#建立資料夾D:\Virtualenvs
配置虛擬環境管理器工作目錄
#配置環境變數
# 控制面板 => 系統和安全 => 系統 => 高階系統設定 => 環境變數 => 系統變數 => 點選新建 => 填入變數名與值
變數名:WORKON_HOME  變數值:自定義存放虛擬環境的絕對路徑
eg: WORKON_HOME: D:\Virtualenvs
#同步配置資訊
# 去向Python3的安裝目錄 => Scripts資料夾 => virtualenvwrapper.bat => 雙擊
使用
#終端命令
1 建立虛擬環境到配置的WORKON_HOME路徑下
	mkvirtualenv -p python3 自定義的虛擬環境名稱(比如:luffy)	使用的是python3
	mkvirtualenv -p python2 自定義的虛擬環境名稱(比如:luffy)	使用的是python2
2 檢視已有的虛擬環境
	workon
3 使用虛擬環境
	workon 已有的虛擬環境名稱(比如:luffy)
4 進入、退出該虛擬環境的Python環境
	python、exit()
5 為虛擬環境安裝模組
	pip install 模組名稱(比如:django==2.2)
6 退出當前虛擬環境
	deactivate
7 刪除虛擬環境(刪除當前虛擬環境要先退出)
	rmvirtualenv
PyCharm的使用(使用虛擬環境)(我們使用這種方式,不建app)

新建專案

使用虛擬環境

環境使用

luffy後臺搭建

環境
#給虛擬環境luffy安裝依賴環境
    pip install django==2.2
	pip install djangorestframework
	pip install pymysql
建立專案(我們前面已經用PyCharm建立好了)
在目標目錄下建立luffy資料夾
cd 進入luffy專案
django-admin startproject luffyapi
用PyCharm開啟專案,使用已經建好的虛擬環境
重構專案目錄
luffyapi
	-logs	#專案執行時/開發時的日誌目錄
	-manage.py	#指令碼檔案
	-scripts	#儲存專案運營時的指令碼檔案
	-luffyapi	#專案的主應用,開發時的程式碼儲存
		-utils(包帶__init__.py)公共函式庫
		-urls.py	#總路由
		-apps(包帶__init__.py)	#子應用儲存目錄
		-libs	#第三方類庫的儲存目錄
		-settings(包帶__init__.py)	#配置目錄
			-dev.py	#專案開發時的本地配置
			-prod.py	#專案上線時的執行配置
建立doc資料夾、建立readme.md檔案
終端下建立兩個應用到apps
cd 到apps目錄下
python ../../manage.py startapp home
python ../../manage.py startapp user
因為manage.py在根目錄,所以需要../../到根目錄去用該檔案
配置開發環境
1 把settings.py內容複製到dev.py,原來的settings.py刪除
2 #修改下面兩檔案
# manage.py
os.environ.setdefault('DJANGO_SETTINGS_MODULE','luffyapi.settings.dev')
# wsgi.py
os.environ.setdefault('DJANGO_SETTINGS_MODULE','luffyapi.settings.dev')#本地使用.dev,後面修改為.prod即可
3 修改dev.py檔案內容(錯誤資訊改成中文)
	LANGUAGE_CODE = 'zh-hans'
    TIME_ZONE = 'Asia/Shanghai'
    USE_TZ = False
4 修改啟動配置
	看下圖
5 把apps做成Sources Root看圖2

資料庫配置

建立專案依賴資料庫,luffyapi
	create database luffyapi;
建立資料庫使用者,授予使用luffyapi資料庫的權利	
	grant all privileges on luffyapi.* to 		     			'luffyapi'@'localhost' identified by '123?';
	---上面命令指:建立使用者luffyapi授予使用luffyapi資料庫使用權,使用者密碼是123
重新整理許可權
    flush privileges;
#配置檔案配置
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'luffy',
        'USER': 'luffy',
        'PASSWORD': 'Luffy123?',
        'HOST': 'localhost',
        'PORT': 3306
    }
}
import pymysql
pymysql.install_as_MySQLdb()

django2.x版本可能會出現一些pymysql相容問題,按報錯註釋、修改原始碼即可

User表配置

匯入from django.contrib.auth.models import AbstractUser
繼承user之前不要資料遷移命令,會出錯,需要:
		-把所有app下的遷移檔案,全刪除
    	-admin,auth app下的遷移檔案刪除
   	    -刪庫(資料一定要匯出來),重新遷移  (自己嘗試一下)
繼承AbstractUser,增加兩個欄位,mobilephone、icon,
	    mobilephone = models.CharField(max_length=11)
    	icon = models.ImageField(upload_to='icon',default='media/default.png')
在settings.py中配置
	MEDIA_URL='/media/'
	MEDIA_ROOT=os.path.join(BASE_DIR,'media')
	#此時的BASE_DIR是luffyapi下的luffyapi
路由開放media資料夾,訪問頭像,需要匯入
    from django.views.static import serve
    from django.conf import settings
    
	re_path('media/(?P<path>.*)', serve{'document_root':settings.MEDIA_ROOT}),	

路飛前臺搭建

1 安裝node.js,官網下載,一路下一步
	檢視版本node -v
2 安裝模組,npm比較慢,用淘寶的cnpm來替換npm
	npm install -g cnpm --registry=https://registry.npm.taobao.org   
3 建立vue的工程,需要一個vue腳手架
	cnpm install -g @vue/cli
4 如果有問題執行如下,重走2、3步
	npm cache clean --force
5 建立vue專案
	vue create 自定義專案名(我們用luffycity)
	選Manually
6 用pycharm開啟,配置快鍵啟動
	看下圖

目錄介紹

public
    -favicon.ico   # 
    -index.html    #整個專案的單頁面
src
    -assets  #靜態檔案,js,css,img
    -components # 小元件,頭部元件,尾部元件
    -router     # 路由相關
    -store      # vuex相關,狀態管理器,臨時儲存資料的地方
    -views      # 頁面元件
    -App.vue    # 根元件
    -main.js    # 配置檔案(跟django的setting一樣
#任何一個元件都有三部分,裡面書寫相關程式碼
	<template>
    	#html相關
	</template>
    <style>
		# css相關
	</style>

    <script>
		# js相關
    </script>