Django中用于在html模板中引用的路径的命名



我是Django的新手。我在互联网上四处寻找项目,希望能将其他django应用程序融入这些项目中。现在,我想做的是通过安装Django Machina,在这个特定的项目中添加论坛功能。由于安装已经完成,我很难将其URL放入base.html

由于Machina是一个使用pip下载的应用程序,它不会作为应用程序出现在项目中,而是出现在我正在使用的虚拟环境中。

feed应用程序的urls.py中,

urlpatterns=[
.
.
.
path('forum/', include(machina_urls, namespace='forum')),
.
.
]

feed/templates/feed/base.htmlbase.html

<a class="nav-item nav-link" href="{% url 'feed:forum' %}">Forum</a>

在Machina的指南中,作者提供的URL配置是更新主URL模块,以便包含论坛的URL。因此,我所要做的就是添加:

from machina import urls as machina_urls 
urlpatterns = [ 
# [...] 
path('forum/', include(machina_urls)), 
]

到目前为止,我遇到了一个错误,说我在include((中指定命名空间而不提供app_name是不受支持的,我完全理解这个错误。那么,我该如何命名该特定路径,以便能够在base.html中引用它呢?

提前非常感谢您,如果您需要任何其他信息,请告诉我。我会尽力提供。

在这里你可以在模板中使用你的django url:

app_name = "your_app_name"
urlpatterns = [
path('your_url/', your_view, name="your_path_name")),
]  

你可以在这样的模板中使用它:

{% url 'your_app_name:your_path_name' %}

您的问题是您没有在已安装的应用程序中包含machin应用程序

首先,您必须在设置中向INSTALLED_APS添加machin依赖项和machin自己的应用程序:

INSTALLED_APS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
# Machina dependencies:
'mptt',
'haystack',
'widget_tweaks',
# Machina apps:
'machina',
'machina.apps.forum',
'machina.apps.forum_conversation',
'machina.apps.forum_conversation.forum_attachments',
'machina.apps.forum_conversation.forum_polls',
'machina.apps.forum_feeds',
'machina.apps.forum_moderation',
'machina.apps.forum_search',
'machina.apps.forum_tracking',
'machina.apps.forum_member',
'machina.apps.forum_permission',
)

然后将其包含在模板中间件缓存

对于url,你需要包括machin-app:

from django.urls import include, path
from machina import urls as machina_urls
urlpatterns = [
# [...]
path('forum/', include(machina_urls)),
]

相关内容

  • 没有找到相关文章

最新更新