有人可以向我展示 {%load url from future%} 和 namespace 概念如何运作的示例(以及一个小解释)?
我是python和django的新手,我需要学习如何不使用硬编码的网址以及如何使用其他功能,例如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')),
)
热门-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>
我可以做些什么来为所有链接做类似的事情?
提前致谢。
答案 0 :(得分: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.