Django開發筆記之資料庫的設計

來源:互聯網
上載者:User

標籤:des   style   blog   color   使用   資料   問題   div   

後台採用Django開發,可以體會到開發的便利之處,對於一個項目來說,首先最重要的是資料庫的設計,那麼在Django下資料庫設計主要是如下步驟:

1,需求分析,這點子不用多說,而我也深刻體會到了沒有原型的時候就開始開發的困難之處,每次需求更改就會帶來背景資料和對應介面的一次變更.費時費精力

2.有了需求,那麼開始資料庫的設計,在Django中,並不需要直接去操作資料庫,而且使用繼承modesl.Model的類,在類中定義自己的模型,然後使用Python manage.py syncdb就可看到資料庫中的表了(先得在settings中設定好和資料庫的串連)

3.主要說的是使用者的定義問題,我採用的是比較老的方式,使用profile擴充,並沒有採用繼承抽象使用者類的方式.

使用者的模型Django已經幫我們整合了,我們要做的就是在內建的使用者系統上擴充自己的資料,擴充方法如下:

class UserProfile(models.Model):    # 帳號附加資訊    user = models.OneToOneField(User,unique=True)    #下面定義一些自己的附加資訊,比如性別等等

採用的是一對一的方式,而這種方式使用起來也很簡單,比如使用User.objects.get得到了一個user,然後直接存取user.userprofile.屬性就可以,userprofile是自己定義的擴充表的名稱(Django1.5之前的老版本使用的是user的get_profile函數,但是官方推薦在新版本中時候類的方式訪問)

  使用者擴充到這裡完成,而我們也可以使用Django帶的auth系統,無需去關注cookies等細節了

資料庫使用過程中注意的問題:

  1,建立使用者必須使用User.objects.create_user官方提供的函數,不然auth的認證系統無法通過,而且通過這種方法建立的使用者,密碼是通過加密的,所以推薦有官方的api的時候就是用官方api,不然可能會造成架構的一些模組無法使用

  2.資料庫編碼務必採用utf-8

  3.官方內建的資料庫抽象層由於其具有通用性,所以直接使用起來還是比較麻煩的,比如更改使用者資料就必須同時去操作user和Userprofile兩個表,所以這個時候我們可以在官方的抽象層上再寫一層介面(調用的是Django內建的資料庫抽象層),使得資料庫介面更加切合商務邏輯(這樣做相當於隔離了Django的資料庫抽象層,使用起來更加方便).

  4.前後台通訊是做前台和背景互動的大問題,雖然Django內建了表單系統,但是對於前台來說,使用起來還是不習慣的,所以我放棄了Django的表單系統,前後台通訊採用純粹的變數,由於部分資料過多,而且通過模版渲染時的上下文傳遞也顯得比較麻煩,所以就在自己寫的介面上(3提到的屏蔽Django抽象層的介面)需要的函數,然後使用ajax的方式返回xml資訊交給前台,也可以統一採用xml通訊,但是由於Django的{{}}標籤方式對於有些變數的傳遞還是非常方便的,所以就混合起來用了.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.