Django的django-admin工具詳解


django-admin是Django的一個命令行管理工具,用以對Django項目執行某些命令操作。

1. django-admin安裝

安裝Django后,默認即安裝了django-admin。

Linux系統
默認安裝在$PATH_HOME/dist-packages/django/bin/django-admin.py
Windows系統
默認還在$PATH_HOME/Scripts/中安裝了django-admin.exe和django-admin.py


2. 設置PATH路徑加入django-admin所在位置

Linux系統
export PATH=$PATH;$PATH_HOME/dist-packages/django/bin/

Windows系統
set PATH=%PATH%;$PATH_HOME/Scripts/

后續就可以直接在Shell中執行

django-admin <command> [options]

3. django-admin.py代碼分析

from django.core import management

if __name__ == "__main__":
management.execute_from_command_line()

4. 常見的django-admin命令
diffsettings
startproject
startapp
runserver
testserver
shell
check
test
5. django-admin命令的通用選項
--pythonpath='/python/path'
--settings=mysite.settings
--traceback
--verbosity {0,1,2,3}或-v {0,1,2,3}
-v默認1
--no-color

6. 如果Django項目啟用了django.contrib模塊(默認啟動),則django-admin還可以執行如下命令

1) django.contrib.auth的命令

createsuperuser
changepassword
2) django.contrib.contenttypes的命令

remove_stale_contenttypes
3) django.contrib.gis的命令

ogrinspect
4) django.contrib.sessions的命令

clearsessions
5) django.contrib.sitemaps的命令

ping_google
6) django.contrib.staticfiles的命令

collectstatic
findstatic
7. 在項目代碼中,也可以直接調用django-admin的命令
調用語句:

django.core.management.call_command(command_name, *args, **options)

示例:


from django.core import management
from django.core.management.commands import loaddata

management.call_command('flush', verbosity=0, interactive=False)
management.call_command('flush', '--verbosity=0', interactive=False)

management.call_command('loaddata', 'test_data', verbosity=0)
management.call_command(loaddata.Command(), 'test_data', verbosity=0)


補充:
事實上,在Django項目的代碼中,manage.py文件的功能類似於django-admin,此外manage.py還:
引入sys.path到Django項目
設置DJANGO_SETTINGS_MODULE環境變量指向Django項目中的settings.py
manage.py源代碼如下:
#!/usr/bin/env python
import os
import sys

if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mydjangolists.settings")
try:
from django.core.management import execute_from_command_line
except ImportError:
# The above import may fail for some other reason. Ensure that the
# issue is really that Django is missing to avoid masking other
# exceptions on Python 2.
try:
import django
except ImportError:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
)
raise
execute_from_command_line(sys.argv)

如果沒有對Django進行任何設置,在執行django-admin命令時往往有警告,如下圖所示:


而執行python3 manage.py則會自動應用所在項目的主模塊中的settings.py,如下圖所示:


因此建議使用python3 manage.py ...替代django-admin ...
事實上,如下命令是等價的:
django-admin <command> [options]
python3 manage.py <command> [options]
python3 -m django <command> [options]

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM