在Django项目中构建模板的最佳实践是什么?

2024-06-16 11:23:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道关于如何构建整个Django项目的最佳实践有很多问题,但是我找不到关于如何为Django项目构建模板的具体解释。在

显然,我刚刚开始学习Python/Django,我很困惑为什么我发现的大多数教程/示例中,templates目录下的目录名总是与应用程序的目录名相同。在

例如:

gazette/
    __init__.py
    models.py
    views.py
    static/
        ...
    templates/
        gazette/
            __base.html
            __l_single_col.html
            __l_right_sidebar.html
            __l_left_sidebar.html
            _article_full.html
            _article_summary.html
            _author_list.html
            _author_name.html
            _category_list.html
            _navigation.html
            _tag_list.html
            article_detail.html
            article_list.html
            author_list.html
            category_list.html
            tag_list.html

这实际上来自一个博客:https://oncampus.oberlin.edu/webteam/2012/09/architecture-django-templates

在上述应用程序结构中,应用程序公报/下有模板/目录。反过来,在templates/下,有一个名为gazette/的目录,它与包含它的应用程序目录同名。在这个文件夹下是实际的html模板文件。在

问题:为什么我们不能直接将所有的html模板文件放在templates/目录下? 如果模板文件夹下有几个目录,我会理解结构的逻辑。然而,我从YouTube或博客的任何教程中都找不到一个例子,它显示了一个项目结构,其中templates目录下有多个目录。相反,它们必须将它们唯一的目录(在模板下)命名为与应用程序目录相同的名称。在

如果你能解释它背后的原理,并告诉我任何参考/链接,我将不胜感激。在

提前谢谢


Tags: 项目djangopy目录模板应用程序htmlarticle
2条回答

你的Django项目模板在一天结束时是个人的选择,是的,有已知的模板,优化你的工作流程,大多数项目,但在一天结束时,每个项目是不同的,例如,这是我使用的模板,当我工作的人谁希望我遵循的准则

Project
    app1
    app2
    ..etc
    static
        app1
            images
            css
            js
        app2
            ...etc
    templates
        app1
            file.html
            ...etc
        app2
        ..etc
    log_files
        app1_info.log
        app2_info.log
        app1_erros.log
        ..etc

这是因为Django的哲学是基于分离的,Django是围绕着鼓励模块化而构建的

当我在做个人项目的时候,我喜欢把所有的东西都混合在一起,因为即使对不同的事情使用不同的应用程序,我在大多数项目中仍然会有相同的风格和相同的模板。在

另一种存储模板的方法是将每个应用程序的模板存储在应用程序的templates目录中。在

所以项目结构看起来像这样

 Project  
     app1  
         templates  
             app1  
                 template1.html  
                 template2.html  
     app2 
         templates  
             app2  
                 template1.html

这样您就可以通过传递“app1/templates1.html”从视图中呈现模板

相关问题 更多 >