静态文件配置 1:#在django项目下创建一个static静态文件文件夹,在static文件夹下创建对应的css,img,js文件夹,用来存放css样式文件,图片和js代码,用于HTML引入2:#在django项目的settings配置文件中
静态文件配置
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' %}