django - Django 3.1 有条件加载静态的最佳方法
问题描述
我是 django 的新手,目前正试图找到一种有效的方法来根据当前页面以 django 模板语言加载 css 文件。网址模式是:
path('invoices/', views.list, name='invoice_list'),
path('invoices/new/', views.create, name='create_invoice'),
path('invoices/<int:pk>/', views.edit, name='edit_invoice'),
path('invoices/<int:pk>/lines/new', views.create_line, name='create_line'),
path('invoices/<int:pk>/lines/<int:fk>', views.update_line, name='update_line'),
在 base.html 中,这就是我正在做的事情:
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="{% static 'invoice/css/common.css' %}">
{% if request.path == '/invoices/'%}
<link rel="stylesheet" href="{% static 'invoice/css/invoice_list.css' %}">
{% endif %}
{% if '/invoices/' in request.path and request.path != '/invoices/' and '/line/' not in request.path %}
<link rel="stylesheet" href="{% static 'invoice/css/edit_invoice.css' %}">
{% endif %}
<title>My invoices </title>
</head>
一点都不好, {% if '/invoices/' in request.path and request.path != '/invoices/' and '/line/' not in request.path %}
想知道是否有更好的方法来实现正则表达式样式?提前致谢。
解决方案
你不应该把这样的逻辑放在模板中。相反,您应该为此目的使用block
and模板标签。extends
请参阅模板继承 [Django 文档]:
在base.html
:
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="{% static 'invoice/css/common.css' %}">
{% block extra_css %}
{% endblock extra_css %}
<title>My invoices </title>
</head>
现在在if request.path == '/invoices/'
为真时呈现的模板中,您将将此块填充为:
{% extends "base.html" %}
...
{% block extra_css %}
<link rel="stylesheet" href="{% static 'invoice/css/invoice_list.css' %}">
{% endblock extra_css %}
类似地,在if '/invoices/' in request.path and request.path != '/invoices/' and '/line/' not in request.path
为 true 时呈现的模板中,您将块填充为:
{% extends "base.html" %}
...
{% block extra_css %}
<link rel="stylesheet" href="{% static 'invoice/css/edit_invoice.css' %}">
{% endblock extra_css %}
推荐阅读
- python - 如何从 chalice 应用程序调用 sagemaker xgboost 端点?
- arrays - 如何从数组中的数组创建列
- html - XML 数据不会在页面上居中
- sql-server - 查询在指定日期范围内活动的记录
- reactjs - 重新渲染组件时我的状态发生了变化
- twitter-bootstrap - 在 Bootstrap 中垂直旋转列表组
- arrays - 用于从数组中查找文件年龄的 Powershell 脚本
- c++ - 如何从 std 容器的迭代器中为成员元素创建迭代器?
- c# - 如何在代码隐藏中访问 CommandParameter?
- google-apps-script - 编辑脚本以包含在文本更改时更改单元格颜色的功能