可重用Django应用程序中的基础模板
我想从自定义项目创建一个可重用的应用程序 我想转移到可重用应用程序的部分服务于整个页面,并在顶部使用:可重用Django应用程序中的基础模板,django,django-templates,reusability,Django,Django Templates,Reusability,我想从自定义项目创建一个可重用的应用程序 我想转移到可重用应用程序的部分服务于整个页面,并在顶部使用: {%extensed“myproject/base.html”%} 现在我不确定要使用什么基本模板。在新的可重用应用程序中,我不想使用myproject,因为这是我无法共享的自定义代码 我试图从伟大的django医生那里得到帮助,但找不到解决办法-如果我是盲人,请原谅:-) 在可重用的应用程序中写什么 {%extends?????%}您需要将这些模板存储在应用程序文件夹中 假设您有一个类似于m
{%extensed“myproject/base.html”%}
现在我不确定要使用什么基本模板。在新的可重用应用程序中,我不想使用myproject
,因为这是我无法共享的自定义代码
我试图从伟大的django医生那里得到帮助,但找不到解决办法-如果我是盲人,请原谅:-)
在可重用的应用程序中写什么
{%extends?????%}
您需要将这些模板存储在应用程序文件夹中
假设您有一个类似于myproject/myreusableapp
的结构,您将在myreusableapp文件夹中创建一个模板文件夹,并将您的base.html
文件存储在那里
然后您将扩展该文件
{%extends“myreusableapp/base.html”%}
不幸的是,django在这里没有提供正式约定
有一个第三方文档项目为可重用模板定义了以下规则:
在官方django文档中获得约定的问题自2012年开始公开:
这是我的车票,它作为上面的副本关闭:
。。。我希望将来能达成协议。我这样做:
\project
|
+-\main
| |
| +-\template
| | |
| | +-\mainapp
| | |
| | +-base.html
| | +-index.html
| | +-...
| |
| +-\static
| |
| +-css
| +-js
| +-pics
| +-...
|
+-\otherapp
|
+-...
其中,main
是一个用于标准操作(寻呼机、登录等)的应用程序,其中包含的基本模板和静态。请注意,模板存储在main/templates/main/
中
在项目settings.py
中,不要忘记在STATICFILES\u DIRS
中注册main/static
然后,您可以使用
{%extends'main/base.html%}
进行部署。我没有目录结构myproject/myreusableapp
,因为我希望myreusableapp是一个pip可安装的python包。但是{%extends“myreusableapp/base.html”%}
看起来不错。。。。。。但是等等。“myreusableapp/base.html”看起来怎么样?我想它应该使用某种“扩展”来获取包含项目的页眉+页脚。django-allauth是包含模板的包的一个很好的例子。也许可以看看该代码,在allauth/templates
目录中找到一个真实的示例。谢谢你的链接。模式是“myreusableapp/base.html”包含一行:{%extends“base.html”%}
。请看表单和小部件中的媒体需求(JS/CSS文件)是否包含在响应中?大多数第三方应用程序不接触模板,因为每个人的模板样式都不同。有模板的少数第三方应用程序要么提供原始的、未定型的模板(django allauth)并允许用户覆盖它们,要么提供基于众所周知的css库(如bootstrap或materialize)的模板包(django crispy forms),以及在必要时使用更多模板包进行扩展的能力。底线是,所有py代码都可以相同,但每个人通常都需要不同的模板样式,因此在可重用的应用程序包中看不到这些模板。我的理解是:如果在另一个名为“main2”的项目中重用“otherapp”,那么“main2”提供的基本模板为“main/base.html”。好的,看起来这与AWWEST提供的解决方案大致相同。如果我遗漏了什么,请纠正我。