1. 程式人生 > >python之路_day107_django中url反向解析及數據庫連接

python之路_day107_django中url反向解析及數據庫連接

rom 連接 遷移 data spa mysq height port ack

一、url反向解析

  在正式介紹反向解析之前,我們首先介紹一下在django中的url參數,如下為我們url實例,其中name參數就是其別名,也就是我們接下來講解的反向解析中所依靠的參數。

技術分享圖片

1、模板中反向解析

  在我們的前端頁面上,如form表單,我們通常會指定提交的路徑,但是以往我們都是將路徑寫死,這顯然不是很合理,因為當url中的路徑需要改變的時候,我們又需要逐一去更改頁面。這樣不合理。所以我們就要用到url的別名進行反向解析。

語法:
{% url url的別名 %}

  實例如下:

技術分享圖片

2、視圖中反向解析

  在我們的視圖中,如redirect,我們也會需要用到指定url情況,將路徑寫死很顯然也不是很合理,我們也可通過反向解析的方式獲得相應的路徑,具體語法如下:

語法:
from django.core.urlresolvers import reverse
reverse(url別名)

  實例如下:

技術分享圖片

二、url名稱空間

  假如,我們有兩個app應用,通過路由分發,在兩個app的urls文件中假如兩個app中的url別名相同,則通過反向解析得到的結果有可能出現混亂,即會查找到另一個app中url別名對應的url路徑,這顯然不是我們想要的,造成的這樣的原因是django在查找url別名是會從全局中查找。解決辦法是在路由分發時指定名稱空間參數namespace,如下所示:

技術分享圖片

  如上設置以後,在app應用按照如下方式方向解析時就不會出現問題:

技術分享圖片

技術分享圖片

三、django連接數據庫

  我們知道在django中有通過數據遷移我們便有默認的sqlite數據庫供我們使用,這是django自帶的數據庫,其實並不能滿足我們的實際生產中的使用,這是因為在django的setting文件中進行如下的配置:

DATABASES = {
    default: {
        ENGINE: django.db.backends.sqlite3,
        NAME: os.path.join(BASE_DIR, db.sqlite3),
    }
}

  如果我們不想使用默認數據庫,則我們可以重新在setting文件中配置此參數,設置成我們自己想要連接的數據庫,如下為mysql數據庫的配置方式,註意一點,django中不可以實現建立數據庫,所以數據庫需要我們在cmd中自行建好。

DATABASES = {

    default: {

        ENGINE: django.db.backends.mysql,
        NAME: day107,                                     #你的數據庫名稱
        USER: root,                                       #你的數據庫用戶名
        PASSWORD: ‘‘,                                       #你的數據庫密碼
        HOST: ‘‘,                                           #你的數據庫主機,留空默認為localhost
        PORT: 3306,                                       #你的數據庫端口

    }
}

  除此,配置完上述以後,也不能完成數據庫的遷移,主要原因和解決辦法如下。如下更換跟換數據庫的接口代碼需要放在django項目或者應用的int.py 文件,保證在項目啟動的時候完成自動加載。

技術分享圖片

python之路_day107_django中url反向解析及數據庫連接