【问题标题】:Naming of paths in Django for referencing in html templates在 Django 中命名路径以在 html 模板中引用
【发布时间】:2021-06-16 06:26:06
【问题描述】:

我是 Django 的新手。我在互联网上四处寻找项目,希望尝试将其他 django 应用程序整合到这些项目中。现在,我想做的是通过安装 Django-Machina 将论坛功能添加到该特定项目中。安装正确后,我无法将其 URL 放入 base.html

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

feed 应用程序的urls.py 中,

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

base.htmlfeed/templates/feed/base.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 中引用它?

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

【问题讨论】:

    标签: python django django-apps


    【解决方案1】:

    在这里您可以在模板中使用您的 django 网址:

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

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

    {% url 'your_app_name:your_path_name' %}
    

    【讨论】:

    • 感谢您的回复,非常感谢。但是,我仍然有些挣扎,仍然有些困惑。由于我没有编写 Machina 论坛,我不完全确定如何更改 app_name 或者我应该更改其中的哪个。我打算做的基本上是在我的网站中添加一个论坛功能。所以它有点像在 base.html 中包含一个指向 Machina 站点的按钮,以便在那里处理所有论坛功能。我误解了你的回答吗?请告诉我!非常感谢!
    • 在 Machina 的指南中,作者提供的 URL 配置是更新主 URL 模块以包含论坛的 URL。我所要做的就是添加 from machina import urls as machina_urls urlpatterns = [ # [...] path('forum/', include(machina_urls)), ] 我如何在 base 中“命名”或引用该特定路径.html?
    • 嘿,你能给我一个来自 machina url configs @kingsbane 的链接
    • 我认为这个答案可以解决你的问题。check point no 2 --stackoverflow.com/questions/61254816/…
    【解决方案2】:

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

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

    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',
    )
    

    然后将其包含在您的 TEMPLATESMIDDLEWARECACHES

    对于网址,您需要包含 machina 应用程序:

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

    【讨论】:

    • 您好,感谢您的回复,但我确实做了您提到的所有事情。如果我没有在我的 base.html 中引用它,我可以让它工作,但我现在要做的是在我的 base.html 中引用它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-16
    • 1970-01-01
    • 2016-04-06
    • 2018-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多