Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可重用Django应用程序中的基础模板_Django_Django Templates_Reusability - Fatal编程技术网

可重用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提供的解决方案大致相同。如果我遗漏了什么,请纠正我。