Web框架Django,如何返回靜態HTML頁面,遵守這三個步驟:
1.準備前端html文件(在templates裏面建立html)
2.在views.py中處理html文件的返回
from django.http import HttpResponse
def student(request):
"""返回靜態html文件"""
return render(request,'student.html')
3.在urls.py中實現路由
from app01 import views
urlpatterns = [
path('admin/', admin.site.urls),
path('',views.index),
#假如我們想用戶輸入http://127.0.0.1:8000/student/來打開我們製作的html界面,那操作如下:
path('student/', views.student),
]
#備註 student後面斜槓不要掉,還有index啊 student這樣的方法,在此處都不要方法的括號
返回靜態html擴展問題1:如果我們自己新建一個文件夾譬如叫abc 我們在abc文件夾裏面新建html 不在templates裏面建
那麼程序怎麼寫 讓返回abc文件夾裏面的靜態HTML頁面呢?【這個叫做templates文件夾設定】
步驟1.pycharm內右鍵文件夾 置爲templates文件夾 (這步驟弄了,敲幾個前面字母可以自動pycharm補全!我去了這個步驟,感覺可有可無,關鍵是要有步驟2)
步驟2.找到settings.py文件,將abc類比之前的templates文件夾一樣加入到合法DIRS裏,如下
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates'),os.path.join(BASE_DIR, 'abc')]
,
返回靜態html擴展問題2:在django中,html頁面中所依賴的css、js、images、font等等靜態文件,默認情況下都是阻止訪問的,需要進
行單獨的配置!!!!
步驟1.建立靜態文件的文件夾 通常單獨建立一個文件夾 習慣叫static,因爲靜態文件有css、js、images、font等等靜態文件,
所以我們還會在static文件夾下再分細類建立css、js、images、font等文件夾
步驟2.配置文件夾爲項目的合法靜態文件夾-----在settings.py文件用到的關鍵字STATICFILES_DIRS!!!
如:#配置靜態文件夾,可以用序列或者元組,下面我用的是元組!
STATICFILES_DIRS = (
os.path.join(BASE_DIR,'static'),
)
步驟3.如何訪問這些靜態文件
在settings.py文件下的 STATIC_URL = '/static/' 含義是“靜態文件的訪問url”
譬如項目/static/css/student.css 所以那麼html代碼那裏引用這個css是寫 href="/static/css/student.css"
又譬如譬如項目/static/images/1.jpg 外面人打開這個1.jpg可以通過http://127.0.0.1:8000/static/images/1.jpg打開!!
(步驟3注意的是href="/static/css/student.css"或者http://127.0.0.1:8000/static/images/1.jpg的static不是那個我們新建文件夾的名字,而是
這個STATIC_URL = '/static/'裏面的字 如果你改爲STATIC_URL = '/static11/'!那麼訪問就是用href="/static11/css/student.css"和http://127.0.0.1:8000/static11/images/1.jpg )
關於步驟3我改了STATIC_URL = '/static/'的名字 可能如果你程序很多地方是直接使用這個/static/名字進行引用靜態文件的,導致你程序裏面
每一處都要去修改這個名字,其實django提供了一個引用手段,利用在html開頭加入{% load staticfiles %} 之後程序裏面可以用{% static 'images/2.jpg' %}代替!避免產生我說的這種麻煩!
實打實用真名的例子:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>老師文件夾~!!!!!!!!!!!!</h1>
<img src="/static/images/2.jpg" width="200" height="200" />
</body>
</html>
通過引用代號方式的例子,那麼不管STATIC_URL = '/static/'的名字變爲什麼名字 程序都不需要做改動了:
{% load staticfiles %}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>老師文件夾~!!!!!!!!!!!!</h1>
<img src="{% static 'images/2.jpg' %}" width="200" height="200" />
</body>
</html>
靜態文件,默認情況下都是阻止訪問的,需要進行單獨的配置!單獨配置過程如下圖
下面這些是演示在settings.py文件下的 STATIC_URL = '/static/' 含義是“靜態文件的訪問url”涉及的理解和優化問題