【问题标题】:How to resolve recursion error in python django urls.py如何解决 python django urls.py 中的递归错误
【发布时间】:2019-07-29 02:08:05
【问题描述】:

我对 django 还是很陌生,并且在 https://github.com/mkaykisiz/DjangoS3Browser/ 的一个项目上工作,在添加 "url(r'^' + settings.S3_BROWSER_SETTINGS + '/', include('djangoS3Browser .s3_browser.urls'))," 到 url.py 的行

项目结构: 我有 s3_browser 目录下的视图,因此导入了相同的你能纠正我吗?下面是我的项目结构:

└───djangoS3Browser

    └───manage.py

    ├───s3_browser

    │   └───__pycache__

        └─── operations.py

                                └─── settings.py

                                └─── urls.py

                                └─── views.py

                                └─── wsgi.py

    ├───static

    │   ├───css

    │   ├───images

    │   └───js

    ├───templates

    ├───templatetags

URL.py

from django.conf.urls import url, include
from django.conf.urls.static import static

from djangoS3Browser.s3_browser import settings
from djangoS3Browser.s3_browser import views
import sys

urlpatterns = [
                  url(r'^get_folder_items/(.+)/(.+)/$', views.get_folder_items, name='get_folder_items'),
                  url(r'^upload/$', views.upload, name='upload'),
                  url(r'^create_folder/$', views.create_folder, name='create_folder'),
                  url(r'^download/$', views.download, name='download'),
                  url(r'^rename_file/$', views.rename_file, name='rename_file'),
                  url(r'^paste_file/$', views.paste_file, name='paste_file'),
                  url(r'^move_file/$', views.move_file, name='move_file'),
                  url(r'^delete_file/$', views.delete_file, name='delete_file'),
                  url(r'^' + settings.S3_BROWSER_SETTINGS + '/', include('djangoS3Browser.s3_browser.urls')),
              ] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

Settings.py:

AWS_ACCESS_KEY_ID = ""
AWS_SECRET_ACCESS_KEY = ""
AWS_STORAGE_BUCKET_NAME = ""
AWS_S3_ENDPOINT_URL = ""
AWS_AUTO_CREATE_BUCKET = True
AWS_QUERYSTRING_AUTH = False
S3_BROWSER_SETTINGS = "djangoS3Browser"

AWS_EXPIRY = 60 * 60 * 24 * 7
control = 'max-age=%d, s-maxage=%d, must-revalidate' % (AWS_EXPIRY, AWS_EXPIRY)
AWS_HEADERS = {'Cache-Control': bytes(control, encoding='latin-1')}

TEMPLATES = [
    { 
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [],
    'APP_DIRS': True,
    'OPTIONS': 
    {
    'libraries': {'s3-load': 'djangoS3Browser.templatetags.s3-tags',},
    'context_processors': ["django.contrib.auth.context_processors.auth",'django.contrib.messages.context_processors.messages',]
    }
    }
]
SECRET_KEY = 'y130-j9oz4r5aoamn_n=+s-*7n)*3^s$jmf4(qw6ik28()g^(n'
DEBUG = True
ALLOWED_HOSTS = ['*']
ROOT_URLCONF= 'djangoS3Browser.s3_browser.urls'
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
STATIC_URL = '{}/static/'.format(AWS_S3_ENDPOINT_URL)
STATIC_ROOT = '/static/'
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'djangoS3Browser',
]
WSGI_APPLICATION = 'djangoS3Browser.s3_browser.wsgi.application'
MIDDLEWARE = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
)

实际结果:

File "C:\Anaconda3\lib\site-packages\django\urls\resolvers.py", line 162, in check
    warnings.extend(self._check_pattern_startswith_slash())
  File "C:\Anaconda3\lib\site-packages\django\urls\resolvers.py", line 125, in _check_pattern_startswith_slash
    if regex_pattern.startswith(('/', '^/', '^\\/')) and not regex_pattern.endswith('/'):
RecursionError: maximum recursion depth exceeded while calling a Python object

【问题讨论】:

    标签: django amazon-s3 python-3.7


    【解决方案1】:

    您正在导入错误的设置和视图文件。只需修改您的代码,如下所示:

    from django.conf import settings
    from django.conf.urls import url, include
    from django.conf.urls.static import static
    
    from your_app import views
    import sys
    
    urlpatterns = [
                      url(r'^get_folder_items/(.+)/(.+)/$', views.get_folder_items, name='get_folder_items'),
                      url(r'^upload/$', views.upload, name='upload'),
                      url(r'^create_folder/$', views.create_folder, name='create_folder'),
                      url(r'^download/$', views.download, name='download'),
                      url(r'^rename_file/$', views.rename_file, name='rename_file'),
                      url(r'^paste_file/$', views.paste_file, name='paste_file'),
                      url(r'^move_file/$', views.move_file, name='move_file'),
                      url(r'^delete_file/$', views.delete_file, name='delete_file'),
                      url(r'^' + settings.S3_BROWSER_SETTINGS + '/', include('djangoS3Browser.s3_browser.urls')),
                  ] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    

    编辑:您需要通过 pip 安装 djangoS3Browser 并将其添加到您的现有项目中,而不是复制到您的工作区。就像在他们的 github 仓库中一样:

    只需将应用程序添加到 Django 项目中,添加一些设置,您就可以浏览云容器和隐含的子目录,以及查看/下载对象。

    所以你需要在 django 中使用django-admin startproject mysite 命令创建一个项目,然后将 djangoS3Browser 作为应用程序导入。

    【讨论】:

    • 我在导入模式后看到以下错误... ModuleNotFoundError: No module named 'djangoS3Browser.s3_browser.urls.urlpatterns'; 'djangoS3Browser.s3_browser.urls' 不是一个包
    • 谢谢你..用你的代码更新了 urls.py 但我仍然遇到递归错误:文件“C:\Anaconda3\lib\site-packages\django\core\checks\urls .py",第 23 行,在 check_resolver 中返回 check_method() 如果 regex_pattern.startswith(('/', '^/', '^\\/')) 而不是 regex_pattern.endswith('/'):RecursionError:最大值调用 Python 对象时超出递归深度
    • 您还导入了错误的视图包。您应该导入自己的。
    • 我有 s3_browser 目录下的视图,因此导入了相同的你能纠正我吗?下面是我的项目结构:'''└───djangoS3Browser └───manage.py ├── ─s3_browser │ └───__pycache__ └─── operations.py └─── settings.py └─── urls.py └─── views.py └─── wsgi.py ├───static │ ├ ───css │ ├───images │ └───js ├───templates ├───templatetags'''
    • 请更新您的问题并在问题中添加这些内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-02
    • 2014-05-07
    • 1970-01-01
    • 2016-11-20
    • 2016-01-27
    • 1970-01-01
    • 2013-08-02
    相关资源
    最近更新 更多