【问题标题】:django 2.0 - including urls file from an app to the root urls filedjango 2.0 - 包括从应用程序到根 urls 文件的 urls 文件
【发布时间】:2018-01-26 02:52:00
【问题描述】:

我有兴趣为每个应用程序拥有自己的 urls.py 文件,然后使用像 include('myapp.urls') 这样的包含 django 函数将它们包含在根 urls.py 文件中。

这里的一切都遵循 django 教程:enter link description here

所以,在 root urls.py 中是这样的:

from django.url import include, path
urlpatterns = [ path('folio/', include('folio.urls')) ]

现在在 folio urls.py 中如下所示:

from django.urls import path
from . import views
urlpatterns = [ path('', views.home, name='home') ]

经过一些尝试,我得到的只是找不到页面。

我错过了什么?

这有一个变体,在这种情况下,我只需要将应用程序导入 root urls.py,如下所示:

from django.url import path
from folio import views
urlspatterns = [ path('', views.home, name='home') ]

【问题讨论】:

    标签: python django url


    【解决方案1】:

    页面错误非常明显。给定您的根 url '/'www.example.com/,在您的任何视图中都找不到 url 模式。由于您的网址仅包含admin/folio/。没有注册“/”。

    但是根据您的解决方法,是的,您必须将 URL 映射到特定视图

    在您的情况下,folio.views.home 已映射。您可能需要创建一个主页视图以将base.html 呈现为主页。

    urls.py

    from django.url import include, path
    from main.views import home # main is a master app that renders index or home page.
    
    urlpatterns = [
        path('', home, name="index"),
        path('folio/', include('folio.urls'))
    ]
    

    app_name/views.py

     def home(request):
         return render(request, 'main/base.html', {})
    

    我还鼓励在您的 folio.urls.py 中 urlpatterns 之前添加此应用程序命名空间 app_name = 'folio' 这样您就可以在您的 main/templates/main/base.html 模板中使用此 url 语法导航到您的作品集应用程序主页。

    ma​​in/templates/main/base.html

     <a href="{% url 'folio:home' %}">Go to folio home page</a>
    

    【讨论】:

    • 抱歉,回复晚了。经过更多尝试,我实际上解决了它。在根 urls.py 文件中,将行 path('folio/', include('folio.urls')) 更改为此 path('', include('folio. urls')) 工作。而且,在作品集应用程序中,其 urls.py 与 path('', home, name='home') 保持相同。无论如何,我很感谢你的时间和善意的帮助,以及鼓励使用应用命名空间,我一定会这样做。
    猜你喜欢
    • 2018-05-26
    • 1970-01-01
    • 2011-11-26
    • 2016-06-01
    • 2014-05-30
    • 2020-05-31
    • 1970-01-01
    • 2020-04-27
    • 1970-01-01
    相关资源
    最近更新 更多