Python框架篇之Django(基本流程、命令行、配置文件)

一、總述

Python的WEB框架主要分爲以下:

流程
基本配置
路由系統
視圖view
模板template
Model
中間件
Form
認證系統
CSRF
分頁
Cookie
Seesion
緩存
序列化
信號
admin

二、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配置

   TEMPLATES

   STATICFILES_DIRS=(
        os.path.join(BASE_DIR,"statics"),
    )
   STATIC_URL = '/static/'
   我們只能用 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的命令行

1、django-admin.py 是Django的一個用於管理任務的命令行工具,manage.py是對django-admin.py的簡單包裝,每一個Django Project裏都會有一個mannage.py

  • manage.py ----- Django項目裏面的工具,通過它可以調用django shell和數據庫等
  • settings.py ---- 包含了項目的默認設置,包括數據庫信息,調試標誌以及其他一些工作的變量
  • urls.py ----- 負責把URL模式映射到應用程序

2、在命令行創建blog應用:python manage.py startapp blog

3、在命令行啓動django項目:python manage.py runserver 8090此處端口爲8090

4、(1)生成同步數據庫的腳本:python manage.py makemigrations
(2)同步數據庫: python manage.py migrate

注意:在開發過程中,數據庫同步誤操作之後,難免會遇到後面不能同步成功的情況,解決這個問題的一個簡單粗暴方法是把migrations目錄下的腳本(除__init__.py之外)全部刪掉,再把數據庫刪掉之後創建一個新的數據庫,數據庫同步操作再重新做一遍。

5、清空數據庫:python manage.py flush

6、查詢某個命令的詳細信息: django-admin.py help startapp
admin 是Django 自帶的一個後臺數據庫管理系統

7、啓動交互界面 :python manage.py shell

8、查看詳細列表(在忘記子名稱的時候特別有用):python manage.py

9、創建超級管理員:python manage.py createsuperuser

10、顯示並記錄所有數據的改動:python manage.py makemigrations

四、配置文件(settings)

1、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
  • 例如:
 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文件

2、STATIC_ROOT和STATIC_URL

STATIC主要指的是如css,js,images這樣文件,在settings裏面可以配置STATIC_ROOT和STATIC_URL
配置方式與MEDIA_ROOT是一樣的,但是要注意:

  • STATIC_ROOT:在settings裏面設置,一般用來放一些公共的js,css,images等
  • app的static文件夾,在每個app所在文夾均可以建立一個static文件夾,然後當運行collectstatic時,Django會遍歷INSTALL_APPS裏面所有app的static文件夾,將裏面所有的文件複製到STATIC_ROOT。
    因此,如果你要建立可複用的app,那麼你要將該app所需要的靜態文件放在static文件夾中

也就是說一個項目引用了很多app,那麼這個項目所需要的css,images等靜態文件是分散在各個app的static文件的,當你要發佈時,需要將這些分散的static文件收集到一個地方就是STATIC_ROOT

  • STATIC文件還可以配置STATICFILES_DIRS,指定額外的靜態文件存儲位置(STATIC_URL的含義與MEDIA_URL類似)
STATIC_URL = '/static/'               #別名
        STATICFILES_DIRS = (
        os.path.join(BASE_DIR,"statics")  #實際名 ,即實際文件夾的名字
        )

django對引用名和實際名進行映射,引用時,都是按別名來的,不會按實際名去找

  • statics文件夾寫在不同的app下,靜態文件的調用:
STATIC_URL = '/static/'
        STATICFILES_DIRS=(
            ('hello',os.path.join(BASE_DIR,"app01","statics")) ,
        )

        # 在html文件中:<script src="/static/hello/jquery-1.8.2.min.js"></script>
  • 在網頁中引用js文件
STATIC_URL = '/static/'
        {% load staticfiles %}
       # <script src={% static "jquery-1.8.2.min.js" %}></script>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章