• Django框架静态文件配置和URL解析


    静态文件配置

    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' %}
    
  • 相关阅读:
    app store 上架流程
    iOS代码规范
    【转】clang warning 警告清单(备查,建议直接command + F 速查 )
    计算文字的高度和宽度--以微博会话界面中用户名(userName)为例
    找树节点在二叉树中的深度
    partition函数两种实现方法
    《剑指offer》19题自己实现求普通二叉树的镜像
    删除文件就弹出对话框“不能完成此操作,因为找不到一个或多个需要的项目。(错误代码 -43)
    IntelliJ IDEA快捷键
    idea for mac 最全快捷键整理
  • 原文地址:https://www.cnblogs.com/luckinlee/p/11622274.html
Copyright © 2020-2023  润新知