python之路_day107_django中url反向解析及數據庫連接
一、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反向解析及數據庫連接