django-URL

[root@localhost superlists]# tree
.
├── db.sqlite3
├── lists
│   ├── admin.py
│   ├── admin.pyc
│   ├── apps.py
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── migrations
│   │   ├── __init__.py
│   │   └── __init__.pyc
│   ├── models.py
│   ├── models.pyc
│   ├── templates
│   │   └── home.html
│   ├── tests.py
│   ├── tests.pyc
│   ├── views.py
│   └── views.pyc
├── manage.py
└── superlists
    ├── __init__.py
    ├── __init__.pyc
    ├── settings.py
    ├── settings.pyc
    ├── urls.py
    ├── urls.pyc
    ├── wsgi.py
    └── wsgi.pyc

 superlists/urls.py 的真正作用是定义整个网站使用的 URL。如果某些 URL 只在 lists 应用中使用,Django 建议使用单独的文件 lists/urls.py,让应用自成一体。定义 lists 使用的URL,最简单的方法是复制现有的 urls.py

$ cp superlists/urls.py lists/

然后把 superlists/urls.py 中的三行定义换成一个 include 。注意, include 可以使用一个正则表达式作为 URL 的前缀,这个前缀会添加到引入的所有 URL 上(这就是我们去除重复的方法,同时也让代码结构更清晰):

>>>> superlists/urls.py

urlpatterns = patterns('',
url(r'^$', 'lists.views.home_page', name='home'),
url(r'^lists/', include('lists.urls')),
# url(r'^admin/', include(admin.site.urls)),
)

 在 lists/urls.py 中只需包含那三个 URL 的后半部分,而且不用再写父级 urls.py 中的其他定义:

 

 >>>>lists/urls.py(ch06/045)

from django.conf.urls import patterns, url
urlpatterns = patterns('',
url(r'^(\d+)/$', 'lists.views.view_list', name='view_list'),
url(r'^(\d+)/add_item$', 'lists.views.add_item', name='add_item'),
url(r'^new$', 'lists.views.new_list', name='new_list'),
)

 

猜你喜欢

转载自886.iteye.com/blog/2361305