天天看點

PyCharm 開發Django ,錯誤彙總

近期略微接觸了一下Django。在學習的過程中可謂是坎坎坷坷,遇到了很多的問題。

下面就來談一談我對Django的一點點的見解。

使用PyCharm來開發Django項目是非常的簡單的。建立項目的時候選中Django項目,然後在more settings中寫上應用的名稱。這樣就算是建立好了一個全新的項目。

如下圖:

PyCharm 開發Django ,錯誤彙總
PyCharm 開發Django ,錯誤彙總

雖然這裡面有一個MyDjango的子檔案夾,但是這個檔案夾的存在是MyDjango項目的支援檔案。我們最好是在應用檔案夾MyBlog下完成我們的業務。這樣更容易進行管理。

在這個過程中,我就遇到了讓我很是難忘的問題。

問題一:

沒有MyBlog檔案夾.

這個問題的出現是因為你沒有厘清楚項目和應用之間的差別。我剛開始的時候,就犯了這個錯誤。

應用是存在于項目内部的實作了一系列功能的子產品。是做為子集而存在的。

django-admin startproject projectname//建立一個Django項目 django-admin startapp appname// 建立一個django的應用

這樣就好了。當然這一個步驟使用PyCharm更加的簡單。在這裡就不過多叙述了。

問題二:

初始通路就失敗了.

這一點,我們可以這麼來想,通路一個伺服器上面的一個路徑,首先這台伺服器上必須要有這個應用程式吧。是以我們需要将這個應用部署到伺服器上。

在這裡開發伺服器上同樣也要被部署上相關的應用,而這個應用就是我們剛才建立的那個應用MyBlog.是以要在settings.py中對INSTALLED_APP進行應用名稱的添加。

下面我在提供一個多圖的PyCharm開發Django項目的連結,總結的很詳細。

<a href="http://www.cnblogs.com/benshan/p/4445980.html">圖解 PyCharm+Django</a>

這裡簡單的介紹幾個常用的指令。

django-admin startproject projectname //建立一個django項目 django-admin startapp appname // 建立一個django項目的應用 python manage.py runserver //運作項目,并将項目部署到開發伺服器上面 python manage.py syncdb // 這一個過時了,待會說 python manage.py makemigrations python manage.py migrate這兩個需要配合使用,目的是對資料庫中相關表結構的建立以及同步操作 python manage.py createsuperuser // 建立一個超級管理者,用于背景的管理任務

這個檔案就是一個映射檔案,用于将我們在浏覽器中輸入的url映射到相關的視圖展示函數上。有靜态映射和動态映射之區分。

靜态映射的方式:

這裡主要是靜态的url的映射的處理。共有如下幾種方式:

動态url的比對:

這裡主要是利用正規表達式的方式來實作的,如下面的幾個小例子。

我們的項目中需要有一個名稱固定為templates 的檔案夾,用于存放我們的頁面視圖的模闆檔案。當有使用者請求時,底層就會通過MVC模式将模闆檔案渲染并展示給使用者相關的頁面。

渲染的方法有靜态渲染,也有動态渲染(其實也不算是動态渲染了,隻是加進了模闆變量和模闆标簽等而已)。

先來看一個簡單的渲染方法

哦,對了。忘了說了。渲染的代碼邏輯都是應該在views.py中進行實作的。

這種方式略顯繁瑣,是以引入下面的較為簡單的方式。

第二個參數是一個字典類型的資料,如果模闆中沒有使用到模闆變量,或者模闆标簽。就讓它為空即可。

下面來看一看使用模闆變量以及模闆标簽的渲染吧。

模闆變量{{模闆變量名}}

在模闆檔案中在用得到變量的地方使用模闆變量的方式進行添加。

然後在render_to_response的第二個參數(一個字典)中,我們就可以使用這個模闆變量的key為其指定value的值。

注意: 模闆變量可以使用額=的資料類型可以是字典,清單,甚至是一個類,并且使用類的時候 我們應該可以直接使用其成員變量,這很容易了解了。還可以直接按照調用類的成員變量的 形式調用其内部的方法,但是注意這時使用到的方法不能帶參數,而且需要并且一定要有一個傳回值

模闆标簽{% 标簽内容%}

仍舊是看幾個小例子吧。

下面來看一個較為複雜的也較為全面的渲染檔案的寫法。

urls.py中的映射:

views.py中:

template_student.html:

django是一個優秀的web架構,是以它必然支援很多類型的資料庫。下面我們以sqlite3為例,看一下其書寫:

我們需要知道的是engine代表資料庫類型就行。至于NAME就是我們在資料庫中的對應的資料庫名稱。

也許,你會想使用MySQL資料庫,當然,這也是沒問題的,我們需要更改的也就對應着engine,name,user,password,port 等等的設定,接觸過web開發的都很清楚了。就不多說了。

下面談點實際的,那就是遇到了資料庫相關的錯誤了。怎麼辦?

錯誤一:

django.db.utils.OperationalError: unable to open database file

這個問題的出現有兩種情況:

一:

         沒有安裝連接配接從資料庫的驅動檔案,解決方法。安裝一下相關的connection 檔案,比如jar什麼的都行,在PyCharm下很友善。

二:

        這是檔案權限被禁止而引起的。

        在Linux下,修改一下權限即可。即chmod + 775 + 資料庫檔案名稱。

        但是今天我們要說的是怎麼在Windows下怎麼做。

錯誤二:

django.db.utils.OperationalError: no table named XXX.這是因為我們雖然在models.py中建立了相關的對象,但是資料庫中還沒有得到同步,是以通路一個不存在的東西,肯定是會報錯的。是以要對資料庫完成一次同步操作。

上面的都是我在學習的過程中親身遇到的一些問題,貌似能遇到這麼多問題,也是一種幸運。這樣才讓我獲得了更多的經驗嘛。

真好!