2013-02-08 1 views
0

Может ли кто-нибудь показать мне пример (плюс небольшое объяснение) о том, как {% load url from future%} и namespace Концепция работает?Как {% load url from future%} и пространства имен работают в Django?

Я новичок в 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')), 
) 

топ-navigator.html

, когда я» m, пытающийся запустить сервер, показывает ошибку:

Caught ImportError while rendering: No module named 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

https://docs.djangoproject.com/en/dev/releases/1.3/#changes- к URL-и-ГНУ –

ответ

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.