Djangocms-blog波斯语环境下post-detail反向解析失败求助
问题:波斯语环境下调用
post.get_absolute_url()出现反向解析错误 问题描述
我开发了一个CMS插件用于展示博客详情及链接,该插件在英文(EN)环境中正常运行,但在波斯语(FA)环境下调用post.get_absolute_url()时出现以下错误:
Reverse for 'post-detail' not found. 'post-detail' is not a valid view function or pattern name.
使用版本
- djangocms-blog==1.2.3
- django==3.2.20
- djangocms==3.11.3
相关代码
models.py
class ArticleView(CMSPlugin): post = models.ForeignKey(Post, on_delete=models.CASCADE, related_name="article_view")
cms_plugins.py
@plugin_pool.register_plugin class ArticleViewPlugin(CMSPluginBase): model = ArticleView name = _("Article View Plugin") render_template = "article_view.html" cache = False
article_view.html
<a class="fusion-link-wrapper" href="{{ instance.post.get_absolute_url }}" aria-label="{{ instance.post.title }}"></a>
urls.py
from cms.sitemaps import CMSSitemap 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.contrib.sitemaps.views import sitemap from django.urls import include, path admin.autodiscover() urlpatterns = [ path('sitemap.xml', sitemap, {'sitemaps': {'cmspages': CMSSitemap}}), path('', include('djangocms_blog.taggit_urls')), ] urlpatterns += i18n_patterns( path('admin/', admin.site.urls), path('', include('cms.urls')), path('taggit_autosuggest/', include('taggit_autosuggest.urls')) ) if settings.DEBUG: urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
已尝试操作
修改语言设置并重建波斯语页面,但问题仍未解决。
解决方案建议
补全djangocms-blog路由配置
当前urls.py未将djangocms-blog的核心路由加入多语言规则中,post-detail的URL定义在该模块内,需在i18n_patterns中添加对应路由:urlpatterns += i18n_patterns( path('admin/', admin.site.urls), path('', include('cms.urls')), path('', include('djangocms_blog.urls')), # 添加此行 path('taggit_autosuggest/', include('taggit_autosuggest.urls')) )验证波斯语博客页面与文章关联
确认波斯语已加入settings.LANGUAGES配置,且对应博客文章存在波斯语翻译版本,同时CMS后台已创建波斯语的博客详情页面并关联post-detail视图。清除系统缓存
清理Django缓存及CMS页面缓存,确保路由配置的修改和页面设置的更新生效。
内容的提问来源于stack exchange,提问作者dev-ninja
相关产品推荐
相关产品推荐

