静态文件配置
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' %}