从另一个应用程序渲染到模板的django视图

6

我想从另一个应用程序渲染到模板,但不确定如何导入或是否应该使用模板进行导入?

结构为:

project->
    main app->
       templates->
         pages->
           home.html
         account ->
    current app->
       views.py

我的views.py文件位于当前应用程序中,尝试访问主应用程序中的模板(在pages子文件夹中)。

我该如何渲染它:

def temp_view(request):
    ....
    return render(request, "home.html",context)

1
什么出了问题?很可能是pages/home.html的问题。 - Sayse
1
你可以使用 "pages/home.html",Django 会自动处理它。 - Rohit Jain
2个回答

8

首先,你应该在 settings.py 中配置你的模板静态路径,类似于下面这样:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, "templates")],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                'django.template.context_processors.i18n',
            ],
        },
    },
]

APP_DIRS=True 的意思是,Django 会在每个应用程序目录中查找模板,在你的例子中是 main_app/current_app/

你只需要提到模板路径,并将其视为根路径,如下所示:

def temp_view(request):
   ....
   return render(request, "pages/home.html",context)

Django将在main_app/目录下查找文件pages/home.html

谢谢 - 我没想到那么简单就是 "pages/home.html"。我尝试过导入和各种奇怪的东西。 - Yunti

0
在同一个应用程序中创建视图并进行渲染,这样会更简单吗?
from mainapp.models import mainappmodel
def currentappview(request):
    all = mainappmodel.objects.all()
    return render(request, "pages/home.html", {'all': all})

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接