靜態文件配置
1:#在django項目下創建一個static靜態文件文件夾,在static文件夾下創建對應的css,img,js文件夾,用來存放css樣式文件,圖片和js代碼,用於HTML引入
2:#在django項目的settings配置文件中,配置靜態文件相關配置(setting文件的最下面)
STATIC_URL = '/static/' #靜態文件的文件路徑別名,別名可以改,一般不改
STATICFILES_DIRS = [ #靜態文件的文件路徑,就是創建的static的靜態文件夾路徑,變量必須是這個名字,django會指定這個變量名來查找文件路徑
os.path.join(BASE_DIR,'static')
]
3:HTML頁面引入
{% load filter %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
#引入css文件
<link rel="stylesheet" href="/static/css/index.css">
</head>
<body>
{% res %}
<h1>新項目首頁</h1>
<h1>{{ name | addhello:'你好個屁' }}</h1>
<h1>{% newtag '你好' '世界' %}</h1>
#引入圖片
<img src="/static/img/1.jpg" alt="">
</body>
#引入js文件
<script src="/static/js/index.js"></script>
</html>
URL別名和反向解析
#url寫法
url(r'^home2/', views.home,name='home'),#name給路徑其別名
url(r'^index3/', views.index,name='index'),
#當頁面的路徑發生變化的時候,后台代碼中所有的相關的路徑都要發生改變,使用反向解析,使用別名的方式,就不會發生這種情況,修改路徑只要在url的路由分發修改就可以了,后台中使用反向解析就可識別路徑
from django.shortcuts import render,HttpResponse,redirect
from django.urls import reverse
def home(request):
if request.method=='GET':
return render(request,'home.html',{'name':'張達'})
else:
print('111')
if request.POST.get('username')=='lijie':
#reverse可以反向解析出別名代表的路徑地址,
return redirect(reverse('index'))
def index(request):
return render(request,'index.html')
#**************************************************************
#前段示例:
<a href="{% url 'index' %}"></a>
把路徑變成{% url '路徑別名' %},就可以反向解析路徑
URL命名空間
路由分發 include
#在一個項目中可能有多個應用,如果使用項目的urls文件的話,不利於維護,可以使用include路由分發的方式,分發給不同的應用
1 在每個app下創建urls.py文件,寫上自己app中每個頁面的路徑
2 在項目目錄下的urls.py文件中做一下路徑分發:
from django.conf.urls import url,include
from django.contrib import admin
urlpatterns = [
#當進來的路徑是以app01/開頭的,就會吧路徑分發到app01的應用中,比如訪問路徑是app01/home/,以app01開頭,就會home/這個路徑分發給app01下面的urls文件去
url(r'^app01/', include('app01.urls')),
url(r'^app02/', include('app02.urls')),
]
命名空間namespace
#使用include分發不同路由的時候,如果在每個APP中有重復出現的路徑別名,name在進行反向解析的時候,會在各個應用中查找這個路徑別名,會吧最后一個查找到的路徑進行解析,就會出現不是請求的app應用中那個別名的問題,使用namespace命名空間的方式,可以執行這個別名屬於那個命名空間:就不會出現這個問題
示例代碼:
from django.conf.urls import url,include
from django.contrib import admin
urlpatterns = [
#使用namespace指定命名空間的名稱,
url(r'^app01/', include('app01.urls',namespace='app01')),
url(r'^app02/', include('app02.urls',namespace='app02')),
#在每個app應用下,使用URL反向解析的時候指定別名的命名空間:
后台:reverse('命名空間名稱:別名') -- reverse('app01:home') #指定只在app01中查找這個別名,進行解析
前段:hmtl:{% url '命名空間名稱:別名' %} -- {% url 'app01:home' %}