Django 3.1有条件加载静力学的最佳方法

Django 3.1有条件加载静力学的最佳方法,django,django-templates,Django,Django Templates,我是django新手,目前正试图找到一种有效的方法,根据当前页面使用django模板语言加载css文件。url模式为: 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('invoi

我是django新手,目前正试图找到一种有效的方法,根据当前页面使用django模板语言加载css文件。url模式为:

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'),
path('invoices/',views.list,name='invoices_list'),
路径('invoices/new/',views.create,name='create_invoices'),
路径('invoices/',views.edit,name='edit_invoices'),
路径('invoices//lines/new',views.create\u line,name='create\u line'),
路径('invoices//lines/',views.update\u line,name='update\u 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 request.path='/invoices/'%}
{%endif%}
{%if'/invoices/'在request.path和request.path!='/invoices/'和'/line/'不在request.path%}
{%endif%}
我的发票
{%if'/invoices/'在request.path和request.path!='/invoices/'和'/line/'不在request.path%}
一点也不好,想知道是否有更好的方法来实现它,也许是regexp风格?
提前感谢。

您不应该将此类逻辑放入模板中。为此,您应该使用and模板标记。见:

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>

类似地,在request.path和request.path!='/发票/'和'/line/'不在请求中。如果路径为真,则您将按以下方式填充该块:

{% extends "base.html" %}
...
{% block extra_css %}
    <link rel="stylesheet" href="{% static 'invoice/css/invoice_list.css' %}">
{% endblock extra_css %}
{% extends "base.html" %}
...
{% block extra_css %}
    <link rel="stylesheet" href="{% static 'invoice/css/edit_invoice.css' %}">
{% endblock extra_css %}
{%extends“base.html”%}
...
{%block-extra_-css%}
{%endblock额外_css%}