Django 动态 URL 模式返回 404

问题描述 投票:0回答:1

我目前正在构建一个 Django CMS 应用程序。

当我尝试使用动态 url 模式时,我只得到 404。

调试=真

返回:

使用 myproject.urls 中定义的 URLconf,Django 按以下顺序尝试了这些 URL 模式:

[...]

ro/ gallery/int:folder_pk/ [name='dynamic_gallery_view']

[...]

当前路径 /ro/gallery/3/ 与其中任何一个都不匹配。

url.py

from django.urls import path
from .views import (postBarbersCards_create_employee,
                    postBarbersCards_create_location,
                    postBarbersCards_update_employee,
                    postBarbersCards_update_location,
                    postBarbersCards_delete_employee,
                    postBarbersCards_delete_location,
                    postBarbersCards_caroussel,
                    render_gallery_location,
                    render_gallery_location_selector)



urlpatterns = [
    # ... other urls
    path('post/ajax/postBarbersCards_create_employee', postBarbersCards_create_employee, name = "postBarbersCards_create_employee"),
    path('post/ajax/postBarbersCards_create_location', postBarbersCards_create_location, name = "postBarbersCards_create_location"),
    path('post/ajax/postBarbersCards_update_employee', postBarbersCards_update_employee, name = "postBarbersCards_update_employee"),
    path('post/ajax/postBarbersCards_update_location', postBarbersCards_update_location, name = "postBarbersCards_update_location"),
    path('post/ajax/postBarbersCards_delete_employee', postBarbersCards_delete_employee, name = "postBarbersCards_delete_employee"),
    path('post/ajax/postBarbersCards_delete_location', postBarbersCards_delete_location, name = "postBarbersCards_delete_location"),
    path('post/ajax/postBarbersCards_caroussel', postBarbersCards_caroussel, name = "postBarbersCards_caroussel"),
    path('gallery/<int:folder_pk>/',render_gallery_location, name='dynamic_gallery_view'),
    path('gallery/location',render_gallery_location_selector, name='dynamic_gallery_location_view'),

    # ...
]

views.py

from django.shortcuts import get_object_or_404, render
from django.http import JsonResponse
from django.core import serializers
from django.http import HttpResponse
from .models import Barbers_Locations_Model, Barbers_Employees_Model
from filer.models.filemodels import File
from filer.models.foldermodels import Folder
import json

[...]

def render_gallery_location(request, folder_pk):
    item = File.objects.filter(folder_id=folder_pk).values('file', 'folder_id')
    return render(request, '_barbers_cards_gallery_page.html', {'item': item })

我事先在我的 DEV 服务器上测试了所有内容,它可以与 Django Web 服务器中的构建一起使用。 现在,当我尝试投入生产时,它似乎坏了。

我做错了什么?

更新:

也担心 ro/ 后面的空格,但其他 url 模式显示相同并且工作得很好。

调试 url 模式:

@dcf-links/
ro/ jsi18n/ [name='javascript-catalog']
ro/ admin/
ro/ filer/
ro/ ^cms_login/$ [name='cms_login']
ro/ ^cms_wizard/
ro/ ^(?P<slug>[0-9A-Za-z-_.//]+)/$ [name='pages-details-by-slug']
ro/ ^$ [name='pages-root']
ro/ ^media/(?P<path>.*)$
ro/ post/ajax/postBarbersCards_create_employee [name='postBarbersCards_create_employee']
ro/ post/ajax/postBarbersCards_create_location [name='postBarbersCards_create_location']
ro/ post/ajax/postBarbersCards_update_employee [name='postBarbersCards_update_employee']
ro/ post/ajax/postBarbersCards_update_location [name='postBarbersCards_update_location']
ro/ post/ajax/postBarbersCards_delete_employee [name='postBarbersCards_delete_employee']
ro/ post/ajax/postBarbersCards_delete_location [name='postBarbersCards_delete_location']
ro/ post/ajax/postBarbersCards_caroussel [name='postBarbersCards_caroussel']
ro/ gallery/<int:folder_pk>/ [name='dynamic_gallery_view']
ro/ gallery/location [name='dynamic_gallery_location_view']
^media/(?P<path>.*)$

根 urls.py:

from django.conf import settings
from django.conf.urls.i18n import i18n_patterns
from django.conf.urls.static import static
from django.contrib import admin
from django.urls import include, path
from django.views.i18n import JavaScriptCatalog
from django.views.static import serve
from django.urls import path, include,re_path

urlpatterns = i18n_patterns(
    path('jsi18n/', JavaScriptCatalog.as_view(), name='javascript-catalog'),
    path('admin/', admin.site.urls),
    path('filer/', include('filer.urls')),
    path('', include('cms.urls')),
    re_path(r'^media/(?P<path>.*)$',serve,{'document_root':settings.MEDIA_ROOT}),
    path('',include('Apps.barbers_cards.urls')),
)

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

事实上,我检查了我的开发服务器,发现同一个应用程序在没有语言标签的情况下调用了这个 url,但在任何 urls.py 中找不到差异。

python django url design-patterns http-status-code-404
1个回答
0
投票

在您输入并检查根 urls.py 后+发现开发服务器没有包含这些页面的语言标签,我想出了以下解决方案:

我修改了根 urls.py,以便我的自定义页面不需要本地化。我将 i18n_patterns 与非 i18n_patterns 分开

urlpatterns = [path('',include('Apps.barbers_cards.urls'))]

urlpatterns += i18n_patterns(
    path('jsi18n/', JavaScriptCatalog.as_view(), name='javascript-catalog'),
    path('admin/', admin.site.urls),
    path('filer/', include('filer.urls')),
    path('', include('cms.urls')),
)

还是很高兴知道它如何与自定义动态页面的本地化一起工作。

© www.soinside.com 2019 - 2024. All rights reserved.