{% load url from future %} 和命名空间在Django中如何工作?
有没有人能给我举个例子(再加点简单的解释),说明一下{% load url from future %}和namespace这两个概念是怎么工作的?
我刚学python和django,想知道怎么避免写死链接(硬编码的url),还想学学怎么用其他函数,比如reverse()。
这是我想做的一个例子:
urls.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')),
)
top-navigator.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>
我该怎么做才能让所有链接都能类似这样工作呢?
提前谢谢你们。
1 个回答
0
要使用命名空间和 include
语句,你 必须 导入另一个包含 patterns
的 urls.py 文件。
你不能像这里那样直接 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.