django學習--templates模板
阿新 • • 發佈:2019-02-04
1 自定義urls
每次建立的view和對應的url對映總要配置在專案主目錄的urls.py中,如果配置的多了的話
會很麻煩而且不便於維護,所以django支援我們自定義的urls並使用
django.conf.urls.include([views.[方法]])方法匯入對應的對映方法
1.1 開始建立自定義的urls.py
在blog目錄下建立urls.py檔案,按照主目錄的urls.py格式建立
# -*- coding:utf-8 -*-
'''
Created on 2017年6月4日
@author: hp
自定義的urls配置檔案
'''
# 匯入django.conf.urls模組中的函式url,include
from django.conf.urls import url,include
from django.contrib import admin
# 匯入檢視模組blog.views
import blog.views as bv
# url()中第一個引數後面不要忘記'/'否則會找不到路徑
urlpatterns = [
url(r'^index/$',bv.index)
]
測試
2. 開發Template模板
在django中我們通過template模板返回我們指定的檢視介面
2.1 建立自定義的template
找到blog目錄下,建立template
資料夾並建立要返回的html頁面
目錄結構:
index.html
:
<html>
<head>
<title>Blog</title>
</head>
<body>
<h1>Hello,Blog</h1>
</body>
</html>
配置views.py
# -*- coding:utf-8 -*-
from __future__ import unicode_literals
from django.shortcuts import render
# 匯入HttpRequest模組
from django.http import HttpResponse
# Create your views here.
# 在此處建立自己的程式碼
# 定義一個函式,引數名一般為request
# 使用render()函式返回檢視,引數1是request,引數2是templates中的html檔名
def index(request):
return HttpResponse(render(request,'index.html'))
測試
2.2 存在的問題
上個測試的時候我們成功地訪問了頁面,但是如果出現連個同樣名字的index.html
,Django會尋找templates資料夾,結果發現有連個一模一樣的檔案,那麼django會按照在settings.py
中INSTALLED_APPS
中配置的順序訪問對應的html頁面
2.3 問題說明
我們之前已經建立過article
模組,所以我們在article
中建立templates
資料夾,在該資料夾中建立index.html
檔案,然後在views.py
中配置返回對應的檢視,在urls.py
中配置對映的url路徑
article模組目錄結構:
urls.py
# coding:utf-8
'''
Created on 2017年6月4日
@author: hp
'''
from django.conf.urls import url
from django.contrib import admin
import article.views as av
urlpatterns = [url('^index/$',av.index)]
views.py
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.shortcuts import render
# 匯入HttpRequest模組
from django.http import HttpResponse
# Create your views here.
def index(request):
return HttpResponse(render(request,'index.html'))
最後別忘記在主目錄的urls.py
中新增article的urls檔案
# 配置URL對映
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^blog/', include('blog.urls')),
url(r'^article/', include('article.urls')),
]
測試
解決方式
django為我們建議瞭解決方式,那就是在對應的templates資料夾中再建立一個對應模組的資料夾,然後把對應的html檔案放在裡面就好了
目錄結構:
修改views.py
檔案中的響應方法新增'article/index.html'
:
def index(request):
return HttpResponse(render(request,'article/index.html'))
修改views.py
檔案中的響應方法新增'blog/index.html'
:
def index(request):
return HttpResponse(render(request,'blog/index.html'))
再次測試
發現已經恢復正常了