python版本:3.8
diango專案配置及問題解決
- 前言
- 一、新建django工程
- 1.啟動虛擬環境
- 2.創建工程目錄
- 3.創建工程
- 4.創建應用
- 二、mysql配置
- 1.setting檔案更改
- 2.__init.py__檔案更改
- 三、其它配置修改
- 1.注冊應用
- 2.創建模板檔案
- 3.模板配置路徑修改
- 4.創建靜態檔案
- 5.靜態檔案配置路徑修改
- 6.配置urls.py檔案
- 7.應用檔案夾中新建urls.py檔案
- 四、運行服務器
- 五、問題解答
- 1.pymysql未安裝問題
- 2.工程檔案夾中__init.py__未配置問題
- 3.setting.py檔案中NAME路徑問題
- 4.mysqlclient版本太低問題
- 總結
前言
系統軟體版本號:
ubuntu版本:20.4
python版本:3.8
django版本:3.1
mysql版本:8.0
一、新建django工程
1.啟動虛擬環境
usrname@ubuntu:~$ workon 虛擬環境名稱
注:僅有一個虛擬環境時,Tab鍵兩次,可直接快速輸入環境名稱;當有多個虛擬環境時,Tab鍵兩次,會羅列出所有的虛擬環境名稱,
2.創建工程目錄
(demo)usrname@ubuntu:~$ mkdir 工程
(demo)usrname@ubuntu:~$ cd 工程
注:建議創建一個工程目錄,因為同一虛擬環境可以有多個工程,
3.創建工程
(demo)usrname@ubuntu:~/project$ django-admin startproject 工程名稱
注:執行完后,會在project檔案夾中生成一個project同名檔案夾和一個manag.py檔案,project檔案夾中,有__init__.py,asgi.py,settings.py,urls.py和wsgi.py五個檔案,
. project //工程
. project //工程名稱
.__init__.py
. asgi.py
. settings.py
. urls.py
. wsgi.py
. manag.py
4.創建應用
(demo)usrname@ubuntu:~/project$ python manage.py startapp 應用名稱
注:執行完成后,會生成一個應用檔案夾,檔案夾中有migrations檔案夾和__init__.py,admin.py,apps.py,models.py,tests.py和views.py六個檔案,
. project //工程
. appname //應用名稱
.migrations //資料庫遷移檔案
. __init__.py
. __init__.py
. admin.py
. apps.py
. models.py //模型檔案
. tests.py
. views.py //視圖檔案
. project //工程名稱
. manag.py
二、mysql配置
1.setting檔案更改
打開project檔案中的setting.py檔案,修改如下:
DATABASES = {
'default': {
#'ENGINE': 'django.db.backends.sqlite3',
#'NAME': BASE_DIR / 'db.sqlite3',
'ENGINE': 'django.db.backends.mysql',
'NAME': 'demo_db',
'USER': 'root',
'PASSWORD': '******',
'HOST': 'localhost',
'PORT': 3306,
}
}
2.__init.py__檔案更改
打開project檔案中的__init__.py檔案,添加如下內容:
import pymysql
pymysql.install_as_MySQLdb()
三、其它配置修改
1.注冊應用
打開project檔案中的setting.py檔案,修改如下:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'appname', //應用注冊
]
2.創建模板檔案
在應用檔案夾中新建templats檔案夾,并在templats檔案夾中創建appname檔案夾,在appname檔案夾中創建index.html檔案,
. project //工程
. appname //應用名稱
. migrations //資料庫遷移檔案夾
. __init__.py
. admin.py
. apps.py
. models.py //模型檔案
. tests.py
. views.py //視圖檔案
. templats //模板檔案夾
. appname //應用同名檔案夾
. index.html //模板檔案
. project //工程名稱
. manag.py
3.模板配置路徑修改
打開project檔案中的setting.py檔案,修改如下:
EMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [Path.joinpath(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',
],
},
},
]
4.創建靜態檔案
在專案檔案夾中新建static檔案夾,并在static檔案夾中創建css、js、images檔案夾,
. project //工程
. appname //應用名稱
. migrations //資料庫遷移檔案夾
. __init__.py
. admin.py
. apps.py
. models.py //模型檔案
. tests.py
. views.py //視圖檔案
. templats //模板檔案夾
. appname01//應用同名檔案夾
. index.html //模板檔案
. appname02//應用同名檔案夾
. index.html //模板檔案
. static //靜態檔案夾
. css //存放css檔案
. images //存放圖片檔案
. js //存放js檔案
. project //工程名稱
. manag.py
5.靜態檔案配置路徑修改
打開project檔案中的setting.py檔案,修改如下:
STATIC_URL = '/static/'
STATICFILES_DIRS = [Path.joinpath(BASE_DIR, 'static')] //新增
6.配置urls.py檔案
打開project檔案中的urls.py檔案,修改如下:
from django.urls import path, include //增加include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('appname.urls')),//新增配置項,匹配到的內容會被去掉,不再匹配
# path('a', include('appname.urls')),//匹配到的內容a會被去掉,不再去應用中的url中進行匹配
]
或
# from django.urls import path //注釋掉
from django.conf.urls import url, include //新增
urlpatterns = [
url(r'admin/', include(admin.site.urls)),
url(r'^', include('appname.urls')),//新增配置項
]
注:兩種嘗試過都可以正常運行,
7.應用檔案夾中新建urls.py檔案
在應用appname中新建urls.py檔案,增加如下內容:
rom django.conf.urls import url //新增
from booktest import views //新增
urlpatterns = [
url(r'^index$', views.index) //新增
]
四、運行服務器
(demo)usrname@ubuntu:~/project$ python manage.py runserver
五、問題解答
1.pymysql未安裝問題
在虛擬環境中,通過如下命令安裝:
pip install pymysql
2.工程檔案夾中__init.py__未配置問題
提示虛擬環境中未安裝mysqlclient,
import pymysql
pymysql.install_as_MySQLdb()
3.setting.py檔案中NAME路徑問題
配置中的NAME屬性不能參照sqlite3寫成:‘NAME’: ‘BASE_DIR /demo_db’,否付訓出如下錯誤:
TypeError: unsupported operand type(s) for +: 'PosixPath' and 'bytes'
4.mysqlclient版本太低問題
在虛擬環境當前工程的目錄下,運行如下命令啟動服務器:
python manage.py runserver
會出現如下報錯問題:
Watching for file changes with StatReloader
Exception in thread django-main-thread:
Traceback (most recent call last):
File "/usr/lib/python3.8/threading.py", line 932, in _bootstrap_inner
self.run()
File "/usr/lib/python3.8/threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
……
……
……
File "/home/usrname/.virtualenvs/test/lib/python3.8/site-packages/django/db/backends/mysql/base.py", line 36, in <module>
raise ImproperlyConfigured('mysqlclient 1.4.0 or newer is required; you have %s.' % Database.__version__)
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.4.0 or newer is required; you have 0.10.0.
原因是因為django所需的mysqlclient版本號較高,需我們用pip安裝的mysqlclient版本目前只有0.10.0版本,此時需要運行
vi /home/usrname/.virtualenvs/test/lib/python3.8/site-packages/django/db/backends/mysql/base.py
//raise上面有base.py的絕對路徑
將base.py檔案中的36、37關于版本號檢查注釋掉保存設定即可:
34 version = Database.version_info
35 #if version < (1, 4, 0):
36 # raise ImproperlyConfigured('mysqlclient 1.4.0 or newer is required; you have %s.' % Database.__version__)
總結
總結是一個很好的加強記憶的程序,也方便自己回頭看,同時還能幫助他人,一舉多得,
以上是博主自己經過多次摸索,遇到問題、解決問題,并將程序記錄如下,希望對其它剛入行的碼農們有所幫助,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/1519.html
標籤:其他
