You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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)

已尝试操作

修改语言设置并重建波斯语页面,但问题仍未解决。


解决方案建议

  1. 补全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'))
    )
    
  2. 验证波斯语博客页面与文章关联
    确认波斯语已加入settings.LANGUAGES配置,且对应博客文章存在波斯语翻译版本,同时CMS后台已创建波斯语的博客详情页面并关联post-detail视图。

  3. 清除系统缓存
    清理Django缓存及CMS页面缓存,确保路由配置的修改和页面设置的更新生效。

内容的提问来源于stack exchange,提问作者dev-ninja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 22:05:17