Django:租户的模板路径问题

问题描述

我有一个应用程序,根据其类别,租户可以通过/dashboard/templates/dashboard/dashboard2/templates/dashboard2定向到该应用程序(和模板)。

以某种方式,对于dashboard2,Django找不到该应用程序,它尝试在dashboard下找到这些模板。

这是一个dashboard2 / views.py

@method_decorator(login_required,name='dispatch')
class supplierPage2(LoginrequiredMixin,APIView):
    def get(self,request,*args,**kwargs):
        query = request.GET.get('search_ress',None)
        print(query)
        context = {}

        #if query and request.method == 'GET':
        supplier = supplier2.objects.filter(supplier = query)
        print(supplier)
       
        labels = Item2.objects.filter(fournisseur = query).values_list('reference',flat=True)[:10]
        print(labels)
        default_items = Item2.objects.filter(fournisseur = query).values_list('number_of_sales',flat=True)[:10]
        print(default_items)
        label1s = Item2.objects.filter(fournisseur = query).values_list('reference',flat=True)[:10]
        print(label1s)
        default_item1s = Item2.objects.filter(fournisseur = query).values_list('number_of_orders_placed',flat=True)[:10]
        print(default_item1s)
            
        context.update({'supplier' : supplier,'labels':labels,'default_items':default_items,'label1s':label1s,'default_item1s':default_item1s})


        return render(request,'supplier2.html',context)

错误

TemplateDoesNotExist at /supplier2.html
supplier2.html
Request Method: GET
Request URL:    https://uname.website.net/supplier2.html
Django Version: 3.0.5
Exception Type: TemplateDoesNotExist
Exception Value:    
supplier2.html

和回溯:

Template-loader postmortem
Django tried loading these templates,in this order:

Using engine django:

django.template.loaders.filesystem.Loader: /home/ubuntu/website/dashboard/templates/dashboard/dashboard2/templates/dashboard2/supplier2.html (Source does not exist)
django.template.loaders.app_directories.Loader: /home/ubuntu/website/customers/templates/supplier2.html (Source does not exist)
django.template.loaders.app_directories.Loader: /home/ubuntu/exo/lib/python3.6/site-packages/django/contrib/auth/templates/supplier2.html (Source does not exist)
django.template.loaders.app_directories.Loader: /home/ubuntu/website/dashboard/templates/supplier2.html (Source does not exist)
django.template.loaders.app_directories.Loader: /home/ubuntu/website/tenantlogin/templates/supplier2.html (Source does not exist)
django.template.loaders.app_directories.Loader: /home/ubuntu/website/uploadfiles/templates/supplier2.html (Source does not exist)
django.template.loaders.app_directories.Loader: /home/ubuntu/exo/lib/python3.6/site-packages/django_tenants/templates/supplier2.html (Source does not exist)
django.template.loaders.app_directories.Loader: /home/ubuntu/exo/lib/python3.6/site-packages/rest_framework/templates/supplier2.html (Source does not exist)
django.template.loaders.app_directories.Loader: /home/ubuntu/exo/lib/python3.6/site-packages/django_tables2/templates/supplier2.html (Source does not exist)
django.template.loaders.app_directories.Loader: /home/ubuntu/website/dashboard2/templates/supplier2.html (Source does not exist)
django.template.loaders.app_directories.Loader: /home/ubuntu/exo/lib/python3.6/site-packages/django/contrib/admin/templates/supplier2.html (Source does not exist)
django.template.loaders.app_directories.Loader: /home/ubuntu/exo/lib/python3.6/site-packages/crispy_forms/templates/supplier2.html (Source does not exist)

当尝试指定/dashboard2/supplier2.html时,在Django中我仍然遇到相同的错误

TemplateDoesNotExist at /supplier2.html
/dashboard2/supplier2.html

这是我在settings.py中用于模板的内容

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates','Dirs': [os.path.join(BASE_DIR,"dashboard/templates/dashboard","dashboard2/templates/dashboard2")],'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'
            ],},]

在这一点上,我不知道还有什么尝试

解决方法

修复如下设置:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [os.path.join(BASE_DIR,"dashboard/templates/dashboard"),os.path.join(BASE_DIR,"dashboard2/templates/dashboard2")],'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'
            ],},]