2017年10月23日 星期一

Django - View & Mapping

此筆記將簡略的記錄創造好app之後,該做的事情。

views.py裡新增function

urls.py新增 路徑與app.function做mapping


# views.py

from __future__ import unicode_literals

from django.shortcuts import render
from django.http import HttpResponse

def index(request):
return HttpResponse('<em>My Second App</em>')



# urls.py

from django.conf.urls import url
from django.contrib import admin
from apptwo import views
urlpatterns = [
url(r'^$', views.index),
        url(r'^admin/', admin.site.urls),
]


現在我們已經知道要如何去做到Mapping了,可是會發現一個問題,假設有多個App,每個App都有多個Function,依照上述的設定urls.py將會變的很亂,而Django也有解決此問題的方法。

我們利用include()在project的urls.py中做app的設定,如下:

# first_project/urls.py

from django.conf.urls import url
from django.conf.urls import include # 新增這個

urlpatterns = [
url(r'^first_app/', include('first_app')), 
]


完成之後在App目錄底下新增urls.py

# first_app/urls.py

from django.conf.urls import url
from apptwo import views

urlpatterns = [
url(r'^index$', views.index, name='index'),
]


我大概解釋一下,上述設定將每個App的路由交給各自目錄的urls.py處理而不是全部都集中於project的urls.py,結果將會是http://127.0.0.1:8000/first_app/index


first_app/代表執行first_app這個App都要有first_app/,而之後的index代表著first_app中views的index function

有沒有覺得很神奇呢?

沒有留言:

張貼留言