如何扩展到很多模板及其视图功能?

时间:2017-03-26 06:08:55

标签: python django django-models django-forms

我想做的是

我的base.html有一个扩展到它的Cart.html

而其他子HTML可以扩展到base.html并在base.html中提供Cart.html

类似这样的事情

Catalogue.html ----> base.html with Cart.html

Catagories.html ------ ^

我尝试在base.html中包含,表单和按钮确实出现了

但它没有通过Cart.html

中的类和函数
maintainer_id

尝试双重扩展,但在Cart.html中不允许

null

class CartFormView(generic.ListView, ModelFormMixin):
    template_name = 'Shop/Cart.html'
    def get(self, request, *args, **kwargs):
        #bla bla bla

    def post(self, request, *args, **kwargs):
        #bla bla bla

由于

1 个答案:

答案 0 :(得分:0)

  1. 创建一个名为cart.html
  2. 的单独HTML文件
  3. base.html内创建{% block cart_page %}并在其中输入:{% include 'path/to/cart.html' %}
  4. 现在,每个页面都会有cart.html代码段。
  5. 这样的事情:

    <!-- base.html -->
    
    <!DOCTYPE html>
    ...
    
    <body>
        {% block cart_page %}
            {% include 'templates/cart.html' %}
        {% endblock %}
    </body>
    

    现在,如果您希望某些HTML模板不包含cart.html,那么请在这些模板中写下:

    {% block cart_page %}{% endblock %}
    

    当然,如果您想将cart.html包含在任何(子)模板中,您应该在每个子模板的顶部执行:{% extends 'base.html' %}

    最好cart.html 包含完整的样板HTML(以<!DOCTYPE html>等开头),因为它被视为一个片段。唯一具有<!DOCTYPE html>等的文件将是base.html(核心文件)。