django URL问题(代码中url书写规范),django 多个APP时 static文件问题,多个app下的templates中的同名html文件查找顺序

绝对地址

如
<a href='http://127.0.0.1:8000/page/1'></a>
''''
  绝对地址很简单就是将地址写全
'''

相对地址

'/' 开头得相对地址

'/page/1' -'/'开头的相对地址,浏览器会把当前地址栏里的协议,ip和端口加上这个地址,作为最终访问地址,即如果
当前页面地址栏为http://127.0.0.1:8000/page/3;当前相对地址最终结果为http://127.0.0.1:8000 + /page/1

没有 '/' 开头得相对地址

'page/1'-没有‘/’开头的相对地址,浏览器会根据当前url的最后一个/之前的内容加上该相对地址作为最终访问地
址,例如当前地址栏地址为 http://127.0.0.1:8000/topic/detail; 则该相对地址最终结果为 http://127.0.0.1:8000/topic/ + page/1

django 多个APP时 static文件问题

每个APP下都有自己的static文件夹,那如何设置将不会混用呢

以下是实例(我项目里有两个APP(login 和main))

1、首先在setting 文件修改配置路径

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "MGStudio", "static"),
    os.path.join(BASE_DIR, "main", "static"),
    os.path.join(BASE_DIR, "login", "static"),
]

2、在每个APP下的static下建立以APP名相同的文件夹

比如我在login/static/login/

放入样式JS CSS等

3、如何调用样式

{% static 'main/img/firefox-logo-small.jpg' %}

{% static 'login/img/name.png' %}

多个app下的templates中的同名html文件查找顺序

应用内部可以配置模板目录
1.应用下手动创建templates文件夹
2. settings.py中开启应用模板功能
  TEMPLATE配置项中的'APP_DIRS'值为True即可
应用下templates和外层templates 都存在时,django得查找模板规则。
1.优先查找外层templates目录下的模板
2.按INSTALLED_APPS配置下的应用顺序逐层查找

解决方法

我们可以在对应应用下的templates文件夹下创建一个与应用名相同的文件,再将模板文件放到该文件夹中。
如有两个应用分别为news和music,都有一个index.html的模板文件,我们就可以这样。
news:
  templates
      news
        index.html
music:
  templates
      music
        index.html
posted @ 2022-06-07 16:07  春游去动物园  阅读(101)  评论(0编辑  收藏  举报