模板在IIS + Django上不存在

时间:2019-06-17 10:45:06

标签: django python-3.x windows django-templates iis-8

在IIS上部署Django网站后,出现如下错误,

 TemplateDoesNotExist at /test/new_site/list/

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

Using engine django:

django.template.loaders.app_directories.Loader: D:\workspace\One_Site_Project\env_one_site_37\lib\site-packages\django\contrib\admin\templates\test\new_site_list.html (Source does not exist)
django.template.loaders.app_directories.Loader: D:\workspace\One_Site_Project\env_one_site_37\lib\site-packages\django\contrib\auth\templates\test\new_site_list.html (Source does not exist)
django.template.loaders.app_directories.Loader: D:\workspace\One_Site_Project\env_one_site_37\lib\site-packages\rest_framework\templates\test\new_site_list.html (Source does not exist)

我不知道IIS为什么要在virtualenv目录中搜索我的模板文件。

我的视图渲染代码是

@method_decorator(csrf_exempt, name='dispatch')
class NewSiteListUpdate(View):
    """
    This class is used to list all the new site activity, also update an activity
    """


    def get(self, request, *args, **kwargs):
        """
        List all the activity info or a particular activity info
        :param request:
        :param args:
        :param kwargs:
        :return:
        """
        if request.user.is_staff:
            self.data = ActivityInformation.objects.all()
            self.radius = 11111

        return render(request, 'test/new_site_list.html', {'data': self.data})

以下是我在settings.py文件中的模板设置,

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR + '/template/'],
        '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',
            ],
            # 'builtins': [
            #     'src.huawei.templatetags.custom_tags'
            # ],
            'libraries':{
                'custom_tags': 'templatetags.custom_tags',
            },
        },
    },
]

下面是我的项目结构,

enter image description here

这在我的本地系统上运行良好。我也尝试将模板文件夹添加到虚拟目录中,但是没有用,仍然显示相同的错误。我遵循了this教程,以便在IIS上设置我的应用程序。

我正在使用python 3.7和IIS 8.5

我花了两天时间解决此问题,但没有找到与此相关的任何解决方案。

任何帮助将不胜感激。提前致谢。

1 个答案:

答案 0 :(得分:0)

我认为您必须修改代码中的某些部分

settings.py

尝试将'DIRS':[BASE_DIR +'/ template /'] 更改为'DIRS'= [os.path.join(BASE_DIR,'template'),]

views.py 渲染功能创建的路径为: ../ template / huawei / new_site_list.html ,但是在项目结构中您没有文件夹 huawei 。您必须编写:返回渲染(请求,'test / new_site_list.html',{'data':self.data})