我目前正在构建一个 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 中找不到差异。
在您输入并检查根 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')),
)
还是很高兴知道它如何与自定义动态页面的本地化一起工作。