<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## Django簡介 Django是一個高級的Python Web開發框架,它的目標是使得開發復雜的、數據庫驅動的網站變得更加簡單。 由于Django最初是被開發來用于管理勞倫斯出版集團旗下的一些以新聞內容為主的網站的。所以,我們可以發現在使用Django的很多網站里,都是用于作為CMS(內容管理系統)來使用的。使用Django的一些比較知名的網站如下圖所示: ![](https://box.kancloud.cn/2016-05-18_573be527db93d.jpg) 使用Django的網站 Django是一個MTV框架,其架構模板看上去與傳統的MVC架構并沒有太大的區別。其對比如下表所示: | 傳統的MVC架構 | Django 架構 | | --- | --- | | Model | Model(Data Access Logic) | | View | Template(Presentation Logic) | | View | View(Business Logic) | | Controller | Django itself | 在Django中View只用來描述你要看到的內容,Template才是最后用于顯示的內容。而在MVC架構中,這只相當于是View層。它的核心包含下面的四部分: * 一個 對象關系映射,作為數據模型和關系性數據庫間的媒介(Model層); * 一個基于正則表達式的URL分發器(即MVC中的Controller); * 一個用于處理HTTP請求的系統,含web模板系統(View層); 其核心框架還包含: * 一個輕量級的、獨立的Web服務器,只用于開發和測試。 * 一個表單序列化及驗證系統,用于將HTML表單轉換成適用于數據庫存儲的數據。 * 一個緩存框架,并且可以從幾種緩存方式中選擇。 * 中間件支持,能對請求處理的各個階段進行處理。 * 內置的分發系統允許應用程序中的組件采用預定義的信號進行相互間的通信。 * 一個序列化系統,能夠生成或讀取采用XML或JSON表示的Django模型實例。 * 一個用于擴展模板引擎的能力的系統。 ### Django應用架構 Django的每一個模塊在內部都稱之為APP,在每個APP里都有自己的三層結構。如下圖所示: ![](https://box.kancloud.cn/2015-12-28_5680cac0e0f9e.jpg) Django 應用架構 這樣做不僅可以在開發的時候更容易理解系統,而且可以提高代碼的可復用性——因為每一個APP都是獨立的應用,在下次使用時我們只需要簡單的復制和粘貼。 說了這么多,還不如從一個hello,world開始。 ## Django hello,world ### 安裝Django 安裝Django之前,我們可以用virtualenv工具來創建一個虛擬的Python運行環境。環境問題是一個很復雜的問題,在我們使用Python的過程中,我們會不斷地安裝一些庫,而這些庫可能會有不同的版本。并且在安裝Python庫的過程中,我們會遇到權限問題——即我們需要超級用戶的權限才能將庫安裝到系統的環境之下。隨后在這個軟件的生涯中,我們還需要保證這個項目所依賴的模塊不會發生變動。而這些都是很棘手的一些事,這時候我們就需要創建一個虛擬的運行環境,而virtualenv就是這樣的一個工具。 #### virtualenv 安裝Python包我們需要用到pip命令,它是Python語言中的一個包管理工具。如果你沒有安裝的話,可以使用下面的命令來安裝: ~~~ curl https://bootstrap.pypa.io/get-pip.py | python ~~~ 在不同的Python環境中,我們可能需要使用不同的pip,如下所示是筆者使用的Python3的pip命令pip3 ~~~ $ pip3 install virtualenv ~~~ 如果是Python2.7的話,對應會有: ~~~ $ pip install virtualenv ~~~ 需要注意的是這將會安裝到Python所在的目錄,如我的目錄是: ~~~ $ /usr/local/bin/virtualenv ~~~ 有的可能會是: ~~~ $ /usr/local/share/python3/virtualenv ~~~ 在創建我們的這個虛擬環境之前,我們可以創建一個存儲所有virtualenv的目錄: ~~~ $ mkdir somewhere/virtualenvs ~~~ 現在,我們就可以創建一個新的虛擬環境: ~~~ $ virtualenv somewhere/virtualenvs/<project-name> --no-site-packages ~~~ 如果你想使用不同的Python版本的話,那么需要指定Python版本的路徑 ~~~ $ virtualenv --distribute -p /usr/local/bin/python3.3 somewhere/virtualenvs/<project-name> ~~~ 通過到相應的目錄下執行激活就可以使用這個虛擬環境了: ~~~ $ cd somewhere/virtualenvs/<project-name>/bin $ source activate ~~~ 停止使用只使用執行下面的命令即可: ~~~ $ deactivate ~~~ #### 安裝Django 準備了這么久我們終于安裝Django了,執行: ~~~ $ pip install django ~~~ 那么我們并會開始下最新版本的Django,如下所示: ~~~ Collecting django Downloading Django-1.9.4-py2.py3-none-any.whl (6.6MB) 94% |██████████████████████████████▎ | 6.2MB 251kB/s eta 0:00:02 ~~~ 等下載完后,就會開始安裝Django。安裝這完后,我們就可以使用Django自帶的django-admin命令。django-admin是Django自帶的一個管理任務的命令行工具。 通過這個命令,我們不僅僅可以用它來創建項目、創建app、運行服務、數據庫遷移,還可以執行各種SQL工具等等。django-admin用法如下: ~~~ $ django-admin <command> [options] ~~~ 下面是django-admin自帶的一些命令: ~~~ [django] check compilemessages createcachetable dbshell diffsettings dumpdata flush inspectdb loaddata makemessages makemigrations migrate runfcgi runserver shell sql sqlall sqlclear sqlcustom sqldropindexes sqlflush sqlindexes sqlinitialdata sqlmigrate sqlsequencereset squashmigrations startapp startproject syncdb test testserver validate ~~~ 現在,讓我們來看看這個強大的工具。 ### 創建項目 在這些命令中startproject可以用于創建項目,在這里我們的項目名是blog,那么我們的命令如下: $ django-admin startproject blog 這個命令將創建下面的文件內容,而這些是Django項目的一些必須文件。 ~~~ . ├── blog │?? ├── __init__.py │?? ├── settings.py │?? ├── urls.py │?? └── wsgi.py └── manage.py ~~~ blog目錄對應的就是blog這個項目,將會放置這個項目的一些相關配置: 1. settings.py包含了這個項目的相關配置。如數據庫環境、啟用的插件等等。 2. urls.py即URL Dispatcher的配置,指明了某個URL應該指向某個函數來處理。 3. wsgi.py用于部署。WSGI(Python Web Server Gateway Interface,Web服務器網關接口)是為Python語言定義的Web服務器和Web應用程序或框架之間的一種簡單而通用的接口。 4. **init**.py指明了這是一個Python模塊。 manage.py 會在每個Django項目中自動生成,它可以和django-admin做類似的事。如我們可以用manage.py來啟動測試環境的服務器: $ python manage.py runserver ~~~ Performing system checks... System check identified no issues (0 silenced). You have unapplied migrations; your app may not work properly until they are applied. Run 'python manage.py migrate' to apply them. March 24, 2016 - 03:07:34 Django version 1.9.4, using settings 'blog.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C. Not Found: / [24/Mar/2016 03:07:35] "GET / HTTP/1.1" 200 1767 Not Found: /favicon.ico [24/Mar/2016 03:07:36] "GET /favicon.ico HTTP/1.1" 404 1934 ~~~ 現在,我們只需要在瀏覽器中打開[http://127.0.0.1:8000/](http://127.0.0.1:8000/),便可以訪問我們的應用程序。 ### Django后臺 Django很適合CMS的另外一個原因,就是它自帶了一個后臺管理系統。為了啟用這個后臺管理系統,我們需要配置我們的數據庫,并創建相應的超級用戶。如下所示的是settings.py中的默認數據庫配置: ~~~ # Database # https://docs.djangoproject.com/en/1.7/ref/settings/#databases DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } } ~~~ 上面的配置中我們使用的是SQLite3作為數據庫,并使用了當前目錄下的`db.sqlite3`作為數據庫文件。Django內建支持下面的一些數據庫: ~~~ 'django.db.backends.postgresql_psycopg2' 'django.db.backends.mysql' 'django.db.backends.sqlite3' 'django.db.backends.oracle' ~~~ 如果我們想使用別的數據庫,那么可以在網上尋找的解決方案,如用于支持使用MongoDB的django-nonrel項目。不同的數據庫有不同的配置,如下所示的是使用PostgreSQL的配置。 ~~~ DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'mydatabase', 'USER': 'mydatabaseuser', 'PASSWORD': 'mypassword', 'HOST': '127.0.0.1', 'PORT': '5432', } } ~~~ 接著,我們就可以運行數據庫遷移,只需要運行相應的腳本即可: $ python manage.py migrate ~~~ Operations to perform: Apply all migrations: sessions, admin, auth, contenttypes Running migrations: Rendering model states... DONE Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying sessions.0001_initial... OK (growth-django) ~~~ 在上面的過程中,我們會創建相應的數據庫模型,并依據遷移腳本來創建一些相應的數據,如默認的配置等等。 最后,我們可以創建一個相應的超級用戶來登陸后臺。 $ python manage.py createsuperuser ~~~ Username (leave blank to use 'fdhuang'): root Email address: h@phodal.com Password: Password (again): Superuser created successfully. ~~~ 輸入相應的用戶名和密碼,即可完成創建。然后訪問?[http://127.0.0.1:8000/admin](http://127.0.0.1:8000/admin),輸入上面的用戶名和密碼就可以來到后臺: ![](https://box.kancloud.cn/2016-05-18_573be5280d74b.jpg) Django后臺 ### 第一次提交 在創建完應用后,我們就可以進行第一次提交,通常這樣的提交的提交信息(commit message)是`init project`。如果在那之前,你沒有執行`git init`來初始化git的話,那么我們就需要去執行這個命令。 ~~~ git init ~~~ 它將返回類似于下面的結果 ~~~ Initialized empty Git repository in /Users/fdhuang/test/helloworld/.git/ ~~~ 即初始化了一個空的Git項目,然后我們就可以執行`add`來添加上面的內容: ~~~ git add . ~~~ 需要注意的是上在的數據庫文件不應該添加到項目里,所以我們應該執行reset命令來重置這個狀態: ~~~ git reset db.sqlite3 ~~~ 這時我們會將其變成下面的狀態: ![第一次提交前的reset](http://growth-in-action.phodal.com/images/first-commit.png)![第一次提交前的reset](http://growth-in-action.phodal.com/images/first-commit.png) 第一次提交前的reset 上面的綠色文件代碼這幾個文件都被添加了進行,藍色則代表未添加的文件。為了避免手誤產生一些問題,我們需要添加一個名為`.gitignore`文件用于將一些文件名入忽略名單,如下是常用的python項目的`.gitignore`文件中的內容: ~~~ *.pyc *.db *.sqlite3 ~~~ 當我們添加完這個文件完,git就會識別到這個文件,并忽略原來的那些文件,如下圖所示: ![添加完gitignore文件后的效果](http://growth-in-action.phodal.com/images/git-ignore.png) 添加完gitignore文件后的效果 我們只需要添加這個文件即可: ~~~ git add .gitignore ~~~ 如果你之前已經不小心添加了一些不應該添加的文件,那么可以執行下面的命令來重置其狀態: ~~~ git reset . ~~~ 然后再執行添加命令。 最后,我們就可以在本地提交我們的代碼了: ~~~ git commit -m "init project" ~~~ 如果你是將代碼托管在GitHub上的話,那么你就可以執行`git push`來將代碼提交到服務器上。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看