0

有人可以向我展示{% load url from future %}命名空间概念如何工作的示例(加上一个小解释)吗?

我是 python 和 django 的新手,我需要学习如何不制作硬编码的 url,以及如何使用其他函数,如 reverse()。

这是我正在尝试做的一个例子:

网址.py

urlpatterns = patterns('',
    """
      This one is what i did first but works with hardcoded url inside 
      top-navigator.html:
      url(r'^books/$', 'books.views.book_index'),

      The next one is what i'm trying to do:
      (but of course is not correct)
    """
    url(r'^books/$', include('books.views.book_index', namespace='books')),
)

顶部导航器.html

当我尝试运行服务器时显示错误:

渲染时捕获 ImportError:没有名为 book_index 的模块

{% load url from future %}

<div class="navbar-inner">
<ul class="nav">
    <li class="active"><a href="/">Home</a></li>
    <li><a href="{% url 'books:book_index' %}">Books</a></li>
    <li><a href="/authors">Authors</a></li>
    <li><a href="/publishers">Publishers</a></li>
    <li><a href="/contact">Contact</a></li>
</ul>
</div>

我该怎么做才能对所有链接做类似的事情?

提前致谢。

4

1 回答 1

0

要使用命名空间和include语句,您必须在其中导入另一个 urls.py 文件patterns

你不能include像你在这里所做的那样只是一个视图。

将您的代码更改为

{% url 'book_index' %}"

url(r'^books/$', 'books.views.book_index', name='books'))

或者为了说明目的使用命名空间:

more_patterns = patterns('',
    url(r'^$', 'book.views.book_index', name='book_index')),
)

urlpatterns = patterns('',
    url(r'^books/', include(more_patterns, namespace='books')),
                            #^^^^^^^ note you would normally use a string that points
                            #        to a python file containing urls.
)

{% url 'books:book_index' %} will now resolve.
于 2013-02-08T20:13:31.043 回答