後臺管理頁面作好了,接下來就要作公共訪問的頁面了。當咱們剛剛在瀏覽器中輸入http://127.0.0.1:8000/admin/以後,瀏覽器顯示出了後臺管理的登陸頁面,那麼服務器是如何找到這個頁面並返回的呢。/admin/是咱們想要請求的頁面,服務器在收到這個請求以後,就必定對應着一個處理動做,這個處理動做就是幫咱們產生頁面內容並返回回來,這個過程是由視圖來作的。html
對於django的設計框架MVT,用戶在URL中請求的是視圖,視圖接收請求後進行處理,並將處理的結果返回給請求者。前端
視圖就是一個Python函數,它接受Web請求而且返回Web響應。響應能夠是一張網頁的HTML內容,一個重定向,一個404錯誤,一個XML文檔,或者一張圖片. . . 是任何東西均可以。不管視圖自己包含什麼邏輯,都要返回響應。代碼寫在哪裏也無所謂,只要它在你的Python目錄下面。爲了將代碼放在某處,約定是將視圖放置在項目或應用程序目錄中的名爲views.py的文件中。python
視圖的必須有一個參數,通常叫request,視圖必須返回HttpResponse對象,HttpResponse中的參數內容會顯示在瀏覽器的頁面上。程序員
打開booktest/views.py文件,定義視圖index:正則表達式
from django.http import HttpResponse def index(request): return HttpResponse("index")
請求者在瀏覽器地址欄中輸入url,請求到網站後,獲取url信息,而後與編寫好的URLconf逐條匹配,若是匹配成功則調用對應的視圖函數,若是全部的URLconf都沒有匹配成功,則返回404錯誤。django
一條URLconf包括url規則、視圖兩部分:瀏覽器
須要兩步完成URLconf配置:服務器
在booktest/應用下建立urls.py文件:框架
from django.conf.urls import url from booktest import views urlpatterns = [ url(r'^$', views.index), ]
djangotest/urls.py文件修改代碼以下:函數
from django.contrib import admin from django.urls import path from django.conf.urls import include, url urlpatterns = [ path('admin/', admin.site.urls), url(r'^', include('booktest.urls')), ]
視圖和URLconf都定義好了,接下來先啓動服務器。
python manage.py runserver
而後在瀏覽器地址欄中輸入網址:
http://127.0.0.1:8000/
網頁顯示效果以下圖,視圖被成功執行了。
在Django中,將前端的內容定義在模板中,而後再把模板交給視圖調用,各類漂亮、炫酷的效果就出現了。
爲何要使用模板呢?
對頁面設計進行的任何改變都必須對Python代碼進行相應的修改。 站點設計的修改每每比底層Python代碼的修改要頻繁得多,所以若是能夠在不進行Python代碼修改的狀況下變動設計,那將會方便得多。
Python代碼編寫和HTML設計是兩項不一樣的工做,大多數專業的網站開發環境都將他們分配給不一樣的人員(甚至不一樣部門)來完成。 設計者和HTML/CSS的編碼人員不該該被要求去編輯Python的代碼來完成他們的工做。
程序員編寫Python代碼和設計人員製做模板兩項工做同時進行的效率是最高的,遠勝於讓一我的等待另外一我的完成對某個既包含 Python又包含 HTML 的文件的編輯工做。
基於這些緣由,將頁面的設計和Python的代碼分離開會更乾淨簡潔更容易維護。
爲應用booktest下的視圖index建立模板index.html。
設置查找模板的路徑:打開djangotest/settings.py文件,設置TEMPLATES的DIRS值。
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ]
templtes/booktest/index.html文件:
<html> <head> <title>圖書列表</title> </head> <body> <h1>{{title}}</h1> {%for i in list%} {{i}}<br> {%endfor%} </body> </html>
在模板中輸出變量語法以下,變量多是從視圖中傳遞過來的,也多是在模板中定義的。
{{變量名}}
在模板中編寫代碼段語法以下:
{%代碼段%}
打開booktest/views.py文件,調用上面定義的模板文件:
from django.shortcuts import render def index(request): context = {'title': '圖書列表', 'list': range(10)} return render(request, 'booktest/index.html', context)
打開瀏覽器刷新頁面。