Django应用未加载并显示IsADirectoryError错误

如何解决Django应用未加载并显示IsADirectoryError错误

我是django和python的新手。我使用django主题来构建网站。 Djanog,Nginx,Gunicorn运行正常。问题是当我尝试使用应用程序URL加载页面时,它给了我IsADirectoryError。 以下是所有信息。

基本目录

drwxr-xr-x 6 rwb  root 4096 Jul 30 15:43 netdash_venv/
drwxr-xr-x 3 rwb  root 4096 Aug  5 16:12 projects/core

netdash_venv 是python虚拟文件夹,所有项目文件都位于 projects 下的 core 文件夹中。

:/opt/netdash/projects$ ll core
total 76
drwxrwxr-x 7 rwb rwb       4096 Aug 11 11:28 ./
drwxr-xr-x 3 rwb root      4096 Aug  5 16:12 ../
drwxrwxr-x 4 rwb rwb       4096 Aug 10 16:30 app/
drwxrwxr-x 4 rwb rwb       4096 Aug  5 16:31 authentication/
drwxrwxr-x 5 rwb rwb       4096 Aug  5 16:17 core/
srwxrwxrwx 1 rwb www-data     0 Aug 11 11:28 core.sock=
-rw-r--r-- 1 rwb rwb      40960 Aug  5 16:39 db.sqlite3
-rwxr-xr-x 1 rwb rwb        624 Aug  5 15:36 manage.py*
drwxrwxr-x 4 rwb rwb       4096 Aug 10 16:00 sei/
drwxrwxr-x 4 rwb rwb       4096 Aug  5 15:48 staticfiles/

应用身份验证应用处理身份验证/登录/注销部分。我从侧边栏网址启动sei应用程序时遇到问题。

sidebar.html 文件位于 projects / core / core / templates / 文件夹中。

        <li class="nav-item">
          <a class="sidebar-link" href="/sei">
            <span class="icon-holder">
              <i class="c-red-500 ti-video-camera"></i>
            </span>
            <span class="title">SEI</span>
          </a>
        </li>       

当我单击上方的href链接时,出现以下错误

IsADirectoryError at /sei/
[Errno 21] Is a directory: '/opt/netdash/projects/core/core/templates'
Request Method: GET
Request URL:    http://******.net/sei/
Django Version: 2.2
Exception Type: IsADirectoryError
Exception Value:    
[Errno 21] Is a directory: '/opt/netdash/projects/core/core/templates'
Exception Location: /opt/netdash/netdash_venv/lib/python3.5/site-packages/django/template/loaders/filesystem.py in get_contents,line 23
Python Executable:  /opt/netdash/netdash_venv/bin/python3
Python Version: 3.5.2
Python Path:    
['/opt/netdash/projects/core','/opt/netdash/netdash_venv/bin','/usr/lib/python35.zip','/usr/lib/python3.5','/usr/lib/python3.5/plat-x86_64-linux-gnu','/usr/lib/python3.5/lib-dynload','/opt/netdash/netdash_venv/lib/python3.5/site-packages']

settings.py

INSTALLED_APPS = [
    'django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','app','sei'
]
ROOT_URLconf = 'core.urls'
LOGIN_REDIRECT_URL = "home"   # Route defined in app/urls.py
logoUT_REDIRECT_URL = "home"  # Route defined in app/urls.py
TEMPLATE_DIR = os.path.join(BASE_DIR,"core/templates")  # ROOT dir for templates

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates','Dirs': [TEMPLATE_DIR],'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',],},]

核心-urls.py

from django.contrib import admin
from django.urls import path,include

urlpatterns = [
    path('admin/',admin.site.urls),# Django admin route 
    path("",include("authentication.urls")),# Auth routes - login / register
    path("",include("app.urls")),# UI Kits Html files
    path("sei/",include("sei.urls")),]

应用-urls.py

from django.urls import path,re_path
from app import views

urlpatterns = [

    # The home page
    path('',views.index,name='home'),# Matches any html file
    re_path(r'^.*\.*',views.pages,name='pages'),]

应用-views.py

from django.contrib.auth.decorators import login_required
from django.shortcuts import render,get_object_or_404,redirect
from django.template import loader
from django.http import HttpResponse
from django import template

# Create your views here.
@login_required(login_url="/login/")
def index(request):
    return render(request,"index.html")

@login_required(login_url="/login/")
def pages(request):
    context = {}
    # All resource paths end in .html.
    # Pick out the html file name from the url. And load that template.
    load_template = request.path.split('/')[-1]
    html_template = loader.get_template( load_template )
    return HttpResponse(html_template.render(context,request))

sei-urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('',name="sei"),]

sei-views.py

from django.shortcuts import render
from .models import camera

# Create your views here.
def index(request):

    cameras = camera.objects.all()

    return render(request,"sei.html",{'cameras': cameras})

我尝试了多种方法。我可以登录和注销,但是每当我尝试转到/ sei时,都会出现错误。请帮忙。

解决方法

Django按照输入的顺序对照urlpatterns列表检查url。

您当前的核心-urls.py 如下:

from django.contrib import admin
from django.urls import path,include

urlpatterns = [
    path('admin/',admin.site.urls),# Django admin route 
    path("",include("authentication.urls")),# Auth routes - login / register
    path("",include("app.urls")),# UI Kits Html files
    path("sei/",include("sei.urls")),]

这意味着将在 sei.urls 之前检查 app.urls

我不是正则表达式专家,但“ sei /”似乎与应用页面视图的网址匹配。然后,它尝试加载 sei 作为模板,但由于是目录...“ / sei /中的IsADirectoryError”而无法加载。

您可以通过将正则表达式替换为 r'^ / [^ /] *。html'来改进正则表达式,以便仅匹配指向根文件夹并以 .html

我建议重新排列您的网址,以便首先检查更具体的网址。

新核心-urls.py

from django.contrib import admin
from django.urls import path,# Django admin route 
    path("sei/",path("",# UI Kits Html files
]

通过这种方式, sei / 将首先匹配并加载正确的视图。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?