Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django文件服务器规范URL工作不正常(找不到页面)_Python_Django_Django Urls_Pythonanywhere_Django Filer - Fatal编程技术网

Python Django文件服务器规范URL工作不正常(找不到页面)

Python Django文件服务器规范URL工作不正常(找不到页面),python,django,django-urls,pythonanywhere,django-filer,Python,Django,Django Urls,Pythonanywhere,Django Filer,我在我的管理员中使用Django文件管理器处理一个Django web项目,该项目托管在Pythonywhere中。我已经阅读了安装说明,但在访问文件管理器为每个文件创建的规范URL时遇到了问题。似乎我被指向了Filer.url无法识别的扩展url(非规范部分从/Filer public/开始;这是一个正在创建的目录,并将我的文件存储在单独的pythonywhere文件目录中) 我的URL语法有错误吗?我的视图中有错误。规范?我不确定为什么插入确切的规范url会将我重定向到该url的扩展版本 P

我在我的管理员中使用Django文件管理器处理一个Django web项目,该项目托管在Pythonywhere中。我已经阅读了安装说明,但在访问文件管理器为每个文件创建的规范URL时遇到了问题。似乎我被指向了Filer.url无法识别的扩展url(非规范部分从/Filer public/开始;这是一个正在创建的目录,并将我的文件存储在单独的pythonywhere文件目录中)

我的URL语法有错误吗?我的视图中有错误。规范?我不确定为什么插入确切的规范url会将我重定向到该url的扩展版本

Python:3.7 Django:2.2

规范URL: /文件管理器/共享/156087480/39/

错误/调试屏幕

Page not found (404)
Request Method:     GET
Request URL:    http://www.mywebsite.com/filer/sharing/1560887480/39/filer_public/36/ea/36ea58a8-f59c-41ad-9d1f-00a976603eb1/big1.jpg

Using the URLconf defined in mywebsitesite.urls, Django tried these URL patterns, in this order:

    admin/
    ^filer/ sharing/(?P<uploaded_at>[0-9]+)/(?P<file_id>[0-9]+)/$ [name='canonical']

The current path, filer/sharing/1560887480/39/filer_public/36/ea/36ea58a8-f59c-41ad-9d1f-00a976603eb1/big1.jpg, didn't match any of these.
基本URL:/home/mywebsite/mywebsite/url.py

# -*- coding: utf-8 -*-
from __future__ import absolute_import

from django.conf.urls import url

from . import settings as filer_settings
from . import views


urlpatterns = [
    url(
        filer_settings.FILER_CANONICAL_URL + r'(?P<uploaded_at>[0-9]+)/(?P<file_id>[0-9]+)/$',  # flake8: noqa
        views.canonical,
        name='canonical'
    ),
]
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals

from django.http import Http404
from django.shortcuts import get_object_or_404, redirect

from .models import File


def canonical(request, uploaded_at, file_id):
    """
    Redirect to the current url of a public file
    """
    filer_file = get_object_or_404(File, pk=file_id, is_public=True)
    if (not filer_file.file or int(uploaded_at) != filer_file.canonical_time):
        raise Http404('No %s matches the given query.' % File._meta.object_name)
    return redirect(filer_file.url)
from django.contrib import admin
from django.urls import include, path
from django.conf.urls import url
from django.views.generic import TemplateView
from quotes.views import Register

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('django.contrib.auth.urls')),
    path('', include('pages.urls')),
    url(r'^filer/', include('filer.urls')),
]
FILER_CANONICAL_URL = 'sharing/'
MEDIA_ROOT = os.environ.get('FILER_MEDIA_ROOT', os.path.join(BASE_DIR, 'media'))

MEDIA_URL = '/home/mywebsite/media/'
基本设置:/home/mywebsite/mywebsite/SETTINGS.py

# -*- coding: utf-8 -*-
from __future__ import absolute_import

from django.conf.urls import url

from . import settings as filer_settings
from . import views


urlpatterns = [
    url(
        filer_settings.FILER_CANONICAL_URL + r'(?P<uploaded_at>[0-9]+)/(?P<file_id>[0-9]+)/$',  # flake8: noqa
        views.canonical,
        name='canonical'
    ),
]
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals

from django.http import Http404
from django.shortcuts import get_object_or_404, redirect

from .models import File


def canonical(request, uploaded_at, file_id):
    """
    Redirect to the current url of a public file
    """
    filer_file = get_object_or_404(File, pk=file_id, is_public=True)
    if (not filer_file.file or int(uploaded_at) != filer_file.canonical_time):
        raise Http404('No %s matches the given query.' % File._meta.object_name)
    return redirect(filer_file.url)
from django.contrib import admin
from django.urls import include, path
from django.conf.urls import url
from django.views.generic import TemplateView
from quotes.views import Register

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('django.contrib.auth.urls')),
    path('', include('pages.urls')),
    url(r'^filer/', include('filer.urls')),
]
FILER_CANONICAL_URL = 'sharing/'
MEDIA_ROOT = os.environ.get('FILER_MEDIA_ROOT', os.path.join(BASE_DIR, 'media'))

MEDIA_URL = '/home/mywebsite/media/'

通过在url和设置文件中配置静态和媒体根目录,我能够使规范url正常工作,如下所示

url.py

from django.conf import settings
from django.conf.urls.static import static
from django.contrib import admin
from django.urls import include, path
from django.conf.urls import url

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('django.contrib.auth.urls')),
    url(r'^filer/', include('filer.urls')),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
设置.py

# -*- coding: utf-8 -*-
from __future__ import absolute_import

from django.conf.urls import url

from . import settings as filer_settings
from . import views


urlpatterns = [
    url(
        filer_settings.FILER_CANONICAL_URL + r'(?P<uploaded_at>[0-9]+)/(?P<file_id>[0-9]+)/$',  # flake8: noqa
        views.canonical,
        name='canonical'
    ),
]
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals

from django.http import Http404
from django.shortcuts import get_object_or_404, redirect

from .models import File


def canonical(request, uploaded_at, file_id):
    """
    Redirect to the current url of a public file
    """
    filer_file = get_object_or_404(File, pk=file_id, is_public=True)
    if (not filer_file.file or int(uploaded_at) != filer_file.canonical_time):
        raise Http404('No %s matches the given query.' % File._meta.object_name)
    return redirect(filer_file.url)
from django.contrib import admin
from django.urls import include, path
from django.conf.urls import url
from django.views.generic import TemplateView
from quotes.views import Register

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('django.contrib.auth.urls')),
    path('', include('pages.urls')),
    url(r'^filer/', include('filer.urls')),
]
FILER_CANONICAL_URL = 'sharing/'
MEDIA_ROOT = os.environ.get('FILER_MEDIA_ROOT', os.path.join(BASE_DIR, 'media'))

MEDIA_URL = '/home/mywebsite/media/'

我不知道Django Filter,但也许您可以尝试将
文件管理器\u CANONICAL\u URL
更改为带前导斜杠的
'/sharing/'
,看看这是否有帮助?