Django基本設置
Dango設置流程圖片示例:
設置路由時需要註意的一個點是:Django中定義路由時,通常習慣以斜線 / 結尾
其他常用命令:
python manage.py runserver 0.0.0.0:80 開啟
python manage.py startproject project項目
python manage.py startapp app名字
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser 創建超級管理員
一.django簡單實現流程
django
#安裝: pip3 install django
添加環境變量
#1 創建project
django-admin startproject mysite
---mysite
---settings.py
---url.py
---wsgi.py
---- manage.py(啟動文件)
#2 創建APP
python mannage.py startapp app01
#3 settings配置
INSTALLED_APPS 中註冊 app01
MIDDLEWARE 中註釋掉csrf #‘django.middleware.csrf.CsrfViewMiddleware‘,
TEMPLATES 中添加 ‘DIRS‘: [os.path.join(BASE_DIR, "templates")],
LANGUAGE_CODE = ‘zh_Hans‘ # 漢語
TIME_ZONE = ‘Asia/Shanghai‘ # 時區
STATICFILES_DIRS=(
os.path.join(BASE_DIR,"static"), # 靜態文件真實路徑
)
STATIC_URL = ‘/static/‘ # 別名 url訪問的路徑
# 我們只能用 STATIC_URL,但STATIC_URL會按著你的STATICFILES_DIRS去找#4 根據需求設計代碼
url.py
view.py
#5 使用模版
render(req,"index.html")
#6 啟動項目
python manage.py runserver 127.0.0.1:8090
#7 連接數據庫,操作數據
model.py
django的命令行工具
django-admin.py 是Django的一個用於管理任務的命令行工具,manage.py是對django-admin.py的簡單包裝,每一個Django Project裏都會有一個mannage.py。
<1> 創建一個django工程 : django-admin.py startproject mysite
當前目錄下會生成mysite的工程,目錄結構如下:
- manage.py ----- Django項目裏面的工具,通過它可以調用django shell和數據庫等。
- settings.py ---- 包含了項目的默認設置,包括數據庫信息,調試標誌以及其他一些工作的變量。
- urls.py ----- 負責把URL模式映射到應用程序。
<2>在mysite目錄下創建blog應用: python manage.py startapp blog
<3>啟動django項目:python manage.py runserver 8080
這樣我們的django就啟動起來了!當我們訪問:http://127.0.0.1:8080/時就可以看到:
<4>生成同步數據庫的腳本:python manage.py makemigrations
同步數據庫: python manage.py migrate
註意:在開發過程中,數據庫同步誤操作之後,難免會遇到後面不能同步成功的情況,解決這個問題的一個簡單粗暴方法是把migrations目錄下
的腳本(除__init__.py之外)全部刪掉,再把數據庫刪掉之後創建一個新的數據庫,數據庫同步操作再重新做一遍。
<5>當我們訪問http://127.0.0.1:8080/admin/時,會出現:
所以我們需要為進入這個項目的後臺創建超級管理員:python manage.py createsuperuser,設置好用戶名和密碼後便可登錄啦!
<6>清空數據庫:python manage.py flush
<7>查詢某個命令的詳細信息: django-admin.py help startapp
admin 是Django 自帶的一個後臺數據庫管理系統。
<8>啟動交互界面 :python manage.py shell
這個命令和直接運行 python 進入 shell 的區別是:你可以在這個 shell 裏面調用當前項目的 models.py 中的 API,對於操作數據,還有一些小測試非常方便。
<9> 終端上輸入python manage.py 可以看到詳細的列表,在忘記子名稱的時候特別有用。
二.Django的配置文件(settings)
1、概述: #靜態文件交由Web服務器處理,Django本身不處理靜態文件。簡單的處理邏輯如下(以nginx為例): # URI請求-----> 按照Web服務器裏面的配置規則先處理,以nginx為例,主要求配置在nginx. #conf裏的location |---------->如果是靜態文件,則由nginx直接處理 |---------->如果不是則交由Django處理,Django根據urls.py裏面的規則進行匹配 # 以上是部署到Web服務器後的處理方式,為了便於開發,Django提供了在開發環境的對靜態文件的處理機制,方法是這樣: #1、在INSTALLED_APPS裏面加入‘django.contrib.staticfiles‘, #2、在urls.py裏面加入 if settings.DEBUG: urlpatterns += patterns(‘‘, url(r‘^media/(?P<path>.*)$‘, ‘django.views.static.serve‘, {‘document_root‘: settings.MEDIA_ROOT }), url(r‘^static/(?P<path>.*)$‘, ‘django.views.static.serve‘,{‘document_root‘:settings.STATIC_ROOT}), ) # 3、這樣就可以在開發階段直接使用靜態文件了。 2、MEDIA_ROOT和MEDIA_URL #而靜態文件的處理又包括STATIC和MEDIA兩類,這往往容易混淆,在Django裏面是這樣定義的: #MEDIA:指用戶上傳的文件,比如在Model裏面的FileFIeld,ImageField上傳的文件。如果你定義 #MEDIA_ROOT=c:\temp\media,那麽File=models.FileField(upload_to="abc/")#,上傳的文件就會被保存到c:\temp\media\abc #eg: class blog(models.Model): Title=models.charField(max_length=64) Photo=models.ImageField(upload_to="photo") # 上傳的圖片就上傳到c:\temp\media\photo,而在模板中要顯示該文件,則在這樣寫 #在settings裏面設置的MEDIA_ROOT必須是本地路徑的絕對路徑,一般是這樣寫: BASE_DIR= os.path.abspath(os.path.dirname(__file__)) MEDIA_ROOT=os.path.join(BASE_DIR,‘media/‘).replace(‘\\‘,‘/‘) #MEDIA_URL是指從瀏覽器訪問時的地址前綴,舉個例子: MEDIA_ROOT=c:\temp\media\photo MEDIA_URL="/data/" #在開發階段,media的處理由django處理: # 訪問http://localhost/data/abc/a.png就是訪問c:\temp\media\photo\abc\a.png # 在模板裏面這樣寫<img src="{{MEDIA_URL}}abc/a.png"> # 在部署階段最大的不同在於你必須讓web服務器來處理media文件,因此你必須在web服務器中配置, # 以便能讓web服務器能訪問media文件 # 以nginx為例,可以在nginx.conf裏面這樣: location ~/media/{ root/temp/ break; } # 具體可以參考如何在nginx部署django的資料。 3、STATIC_ROOT和STATIC_URL、 STATIC主要指的是如css,js,images這樣文件,在settings裏面可以配置STATIC_ROOT和STATIC_URL, 配置方式與MEDIA_ROOT是一樣的,但是要註意 #STATIC文件一般保存在以下位置: #1、STATIC_ROOT:在settings裏面設置,一般用來放一些公共的js,css,images等。 #2、app的static文件夾,在每個app所在文夾均可以建立一個static文件夾,然後當運行collectstatic時, # Django會遍歷INSTALL_APPS裏面所有app的static文件夾,將裏面所有的文件復制到STATIC_ROOT。因此, # 如果你要建立可復用的app,那麽你要將該app所需要的靜態文件放在static文件夾中。 # 也就是說一個項目引用了很多app,那麽這個項目所需要的css,images等靜態文件是分散在各個app的static文件的,比 # 較典型的是admin應用。當你要發布時,需要將這些分散的static文件收集到一個地方就是STATIC_ROOT。 #3、STATIC文件還可以配置STATICFILES_DIRS,指定額外的靜態文件存儲位置。 # STATIC_URL的含義與MEDIA_URL類似。 # ---------------------------------------------------------------------------- #註意1: #為了後端的更改不會影響前端的引入,避免造成前端大量修改 STATIC_URL = ‘/static/‘ #引用名 STATICFILES_DIRS = ( os.path.join(BASE_DIR,"statics") #實際名 ,即實際文件夾的名字 ) #django對引用名和實際名進行映射,引用時,只能按照引用名來,不能按實際名去找 #<script src="/statics/jquery-3.1.1.js"></script> #------error-----不能直接用,必須用STATIC_URL = ‘/static/‘: #<script src="/static/jquery-3.1.1.js"></script> #註意2(statics文件夾寫在不同的app下,靜態文件的調用): STATIC_URL = ‘/static/‘ STATICFILES_DIRS=( (‘hello‘,os.path.join(BASE_DIR,"app01","statics")) , ) #<script src="/static/hello/jquery-1.8.2.min.js"></script> #註意3: STATIC_URL = ‘/static/‘ {% load staticfiles %} # <script src={% static "jquery-1.8.2.min.js" %}></script>
CP:https://www.cnblogs.com/yuanchenqi/articles/6083427.html
https://www.cnblogs.com/chichung/p/9872766.html
Django基本設置