【问题标题】:include() and flatpages confusioninclude() 和平面页面混淆
【发布时间】:2023-03-17 06:43:01
【问题描述】:

我正在关注 Apress:实用 Django 项目,我遇到了一些让我有些困惑的事情。

当我将 url.py 设置为指向平面页面时,如果我这样做,它可以正常工作:

...
(r'', include('django.contrib.flatpages.urls')),
...

但如果我这样做,它不起作用:

from django.contrib import flatpages
...
(r'', include(flatpages.urls)),
...

它告诉我:

'module' 对象没有属性 “网址”

我对 Django 和 Python 的了解都非常有限,所以这可能很明显,但如果能理解发生了什么会很好:)

谢谢

【问题讨论】:

    标签: django include django-urls django-flatpages


    【解决方案1】:

    它需要来自另一个模块的urlpatterns 变量。所以试试:

    from django.contrib import flatpages
    ...
    (r'', include(flatpages.urls.urlpatterns)),
    ...
    

    这与 django 文档 here 中的示例一致。

    编辑:

    我发现了问题。从django.contrib 导入的东西有些混乱,我仍在调查。将您的导入更改为from django.contrib.flatpages import urls

    所以你的代码将是:

    from django.contrib.flatpages import urls
    ...
    (r'', include(urls.urlpatterns)),
    ...
    

    【讨论】:

    • 但是@Acorn 得到的错误是flatpages 没有urls 作为属性,因此它无法达到那么远,而且我们还没有设法传递任何东西到include 函数,由于那个错误。
    • 另外,这里是 django 文档中与传递对象而不是字符串相关的特定部分的链接,尽管它并不能真正解决这个问题:docs.djangoproject.com/en/1.2/topics/http/urls/…
    • 有趣,感谢您的浏览!我仍然对 为什么 它需要 urlpatterns 而不仅仅是 url(与管理员一样)以及为什么导入的行为方式(即不工作)感兴趣 :)
    • 如果您查看代码,您会看到 admin 指向的 urls 属性(不是模块)实际上确实返回了一个 urlpatterns 对象。如果您有兴趣,它在django/contrib/admin/sites.py 第 242 行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    • 1970-01-01
    • 2016-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多