gpt4 book ai didi

python - 用于Elasticsearch的Django CMS绝对URL

转载 作者:行者123 更新时间:2023-12-02 22:38:57 25 4
gpt4 key购买 nike

我为django应用编写了这样的命令:

for p in Article.public.all():
data += '{"index": {"_id": "%s", "_type": "article"}}\n' % p.pk
data += json.dumps({
"title": p.title,
"category": p.category.category,
"content_type": p.content_type,
"duration": p.get_audio_duration(),
"thumbnail": p.get_thumbnail(),
"date": datetime.strftime(p.date, '%d.%m.%Y'),
"url": p.get_absolute_url(),
"content": p.content
}) + '\n'

response = requests.put('{}/radio_index/_bulk'.format(settings.ES_URL), data=data)
get_absolute_url方法如下所示:
    def get_absolute_url(self):
return reverse('tv_article_hook:article_tv_detail', kwargs={'slug': self.slug})

我正在使用Django CMS apphooks。挂接网址为:
urlpatterns = patterns('', 
url(r'^$', ArticleTvListView.as_view(), name='article_tv_list'),
url(r'^(?P<slug>[^/]+)/$', ArticleTvView.as_view(), name='article_tv_detail')
)

当我在模板或REST api中使用 get_absolute_url时,效果很好。但是,当我通过 manage.py feed_index代码运行命令时,在 p.get_absolute_url上失败并出现错误:
django.core.urlresolvers.NoReverseMatch: Reverse for 'article_tv_detail' with arguments '()' and keyword arguments '{'slug': 'some slug'}' not found. 0 pattern(s) tried: []
我怎么解决这个问题 ?

最佳答案

您将需要确保Django本身(而不仅仅是CMS)知道应用程序的 namespace tv_article_hook

我怀疑这是在CMS中注册的,但不是Django知道的 namespace 。现在,根据所使用的Django版本,有两种方法可以为Django定义 namespace 。但是,请阅读application docs,基本上您可以像这样定义自己的应用程序配置;

# tv_article/__init__.py

default_app_config = 'tv_article.apps.TVArticleConfig'

# tv_article/apps.py

from django.apps import AppConfig

class TVArticleConfig(AppConfig):
name = 'tv_article'
verbose_name = "TV Article"

通过该设置,您应该能够像这样修改代码(也从CMS namespace 中删除“_hook”,因为那是CMS术语,但我们在这里只是在谈论Django应用);
def get_absolute_url(self):
return reverse('tv_article:article_tv_detail', kwargs={'slug': self.slug})

关于python - 用于Elasticsearch的Django CMS绝对URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39244232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com