以前配置在工程同工程名的urls.py管理所有app的url
缺點:如果url太多就都寫到這裏,很亂,很長,沒有分類。方然系統提供了一個空格'',作用是寫共同的url部分,但是第二個app訪問和映射都不同,先看看這種寫法吧。
from django.conf.urls import patterns, include, url
urlpatterns = patterns('setapp.views',
url(r'setapp/index/$','index'),
url(r'setapp/time/$','time'),
)
不用的app採用不同的映射組,這樣在多個app的時候就可以用不用分類,放不同url。這裏是一個app沒有必要分開
from django.conf.urls import patterns, include, url
urlpatterns = patterns('setapp.views',
url(r'setapp/index/$','index'),
url(r'setapp/time/$','time'),
)
urlpatterns += patterns('twoapp.views',
url(r'twoapp/index/$','index'),
url(r'twoapp/time/$','time'),
)
沒有app,都有自己的urlpattens管理,看起來簡介。但是這個文件中放了所有的,urls映射,我們可不可以把沒有urls映射都放到自己的appurl中呢?答案是可以的。
可以在每個app中創建一個urls.py文件,這樣每個app的url都自己管理了,結構很清楚,但是不覺得還需要外部配置urls.py中寫出找到內部app中urls.py自己的映射。我們在最外部配置文件中的,urls.py中寫出:
from django.conf.urls import patterns, include, url
urlpatterns = patterns('',
url(r'^setapp/',include('setapp.urls')),
url(r'^twoapp/',include('twoapp.urls')),
)
該映射的意思是
如果你地址中是setapp,就去setapp.urls文件中去找自己具體的映射。
如果你地址中是twoapp,就去twoapp.urls文件中去找自己具體的映射。
所以還需要設置具體。app中的url.py文件,這個文件剛纔我已經提到了。
urlpatterns = patterns('twoapp.views',
url(r'^index/$','index'),
)
工程中的映射,可以定位到app映射文件,在app中寫入自己的映射地址。
urlpatterns = patterns('',
url(r'^twoapp/',include('twoapp.urls')),
)
注意沒有$結束符。沒有匹配完呢,定位到文件所以加上了include定向函數。
Django的每個項目都有一個總的urls.py
但是整個項目的所有的applications中,不同的路由全部結合在總的urls.py會很混亂;
有這樣一種解決方法就是我們在每一個app裏面自己編輯一個urls.py,然後在app內的urls.py裏面定義自己的路由,然後總的urls.py裏include每個app的urls.py文件
like this:
總的urls.py文件,包含兩個app,User和Information
- from django.conf.urls import include, url
- from django.contrib import admin
- from Home import views as Home
- urlpatterns = [
- url(r'^admin/', admin.site.urls),
- url(r'^user/', include('User.urls')),
- url(r'^information/', include('Information.urls')),
- url(r'^$', Home.Main, name="Main"),
- ]
User的urls.py:
- from django.conf.urls import url
- from . import views
- urlpatterns = [
- url(r'^home/(?P<User_id>[0-9]+)/$', views.UserHome, name='UserHome'),
- url(r'^home/(?P<User_id>[0-9]+)/changeinfo/$', views.Changeinfo, name='Changeinfo'),
- url(r'^home/(?P<User_id>[0-9]+)/changeimg/$', views.Changeimg, name='Changeimg'),
- url(r'login/$', views.login, name='login'),
- url(r'logout/$', views.logout, name='logout'),
- ]
- from django.conf.urls import url
- from . import views
- urlpatterns = [
- url(r'^(?P<Information_id>[0-9]+)/$',views.Information,name='information'),
- url(r'^essayList/(?P<EssayList_page>[0-9]+)/$',views.EssayList,name="EssayList"),
- url(r'edit/$', views.edit, name='edit01'),
- url(r'store/$', views.store, name='edit'),
- ]