2016-07-29 32 views
0

我有一個網站設置與Django框架。我想網址作爲本網站映射爲部分如下:Django多個應用程序和urls.py

www.site.com     -> main.html 
www.site.com/    -> main.html 
www.site.com/projects  -> projects.html 
www.site.com/projects/  -> projects.html 
www.site.com/projects/web -> web.html 
www.site.com/projects/web/ -> web.html 
www.site.com/projects/mobile -> mobile.html 
www.site.com/projects/mobile/-> mobile.html 
www.site.com/projects/whatev -> 404.html 
www.site.com/projects/whenev -> 404.html 
www.site.com/projects/web/w -> 404.html 

我目前擁有的主要站點設置了與自己的URL的Django應用程序,並設置爲網站的項目部分的自己的應用。映射如下:

網站/ urls.py

urlpatterns = [ 
    url(r'^$', portfolio_views.about_page, name = "aboutPage"), 
    url(r'^about$', portfolio_views.about_page, name = "aboutPage"), 
    url(r'^experience$', portfolio_views.experience_page, name = "experiencePage"), 
    url(r'^projects', include('projectsApp.urls')), 
    url(r'^projects/', include('projectsApp.urls')), 
    url(r'^publications$', portfolio_views.publications_page, name = "publicationsPage"), 
    url(r'^qualifications$', portfolio_views.qualifications_page, name = "qualificationsPage"), 
    url(r'^contact$',portfolio_views.contact_page, name="contactPage"), 
    url(r'^submitted$', portfolio_views.contact_submitted_page, name = "submittedPage"), 
    url(r'^admin/', admin.site.urls), 
] 

對於項目的應用程序:

項目/ urls.py

urlpatterns = [ 
     url(r'^$', views.projects_page, name='projectPage'),#site/projects 
     url(r'^web$',views.web_project, name='webProject') #site/projects/web 
    ] 

目前以下網址收益率:

www.site.com     -> main.html 
www.site.com/    -> main.html 
www.site.com/whatever  -> 404.html (with css formatting) 
www.site.com/projects  -> projects.html 
www.site.com/projects/  -> projects.html (without css formatting) 
www.site.com/projects/web -> 404.html (without css formatting) 
www.site.com/projects/web/ -> 404.html (without css formatting) 
www.site.com/projects/web/whatev -> 404.html (without css formatting) 

網站應用程序中的/ static/dir中存在css格式。

我不知道爲什麼,給定我的url模式,我無法從項目應用程序中獲取/ web。在我的projects.html文件中,我有一個鏈接將web.html引用爲'projects/web',它產生404.html。我是否需要始終鏈接主應用程序之外的絕對地址?即任何在項目應用程序中作爲www.site.com/projects/link提供的文件?

回答

0

include用於沒有斜槓的網址(例如r'^projects')非常不尋常。這意味着您正在製作內容/projectsweb以及/projects/web

我會嘗試從你的url配置中刪除沒有結尾斜槓的包含。

只要APPEND_SLASH設置爲True,並且您安裝了通用中間件,Django就會從沒有斜線的網址重定向到帶有斜線的網址。例如,它將從www.site.com/projects重定向到www.site.com/projects/

這可能會修復您的CSS格式。如果沒有,你會得到一個簡單的URL配置,所以更容易發現其他問題。