【问题标题】:Django multiple apps and urls.pyDjango 多个应用程序和 urls.py
【发布时间】:2016-12-04 03:06:55
【问题描述】:

我有一个使用 Django 框架设置的站点。我希望作为本网站一部分的网址映射如下:

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 应用程序,并将站点的项目部分设置为自己的应用程序。映射如下:

site/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),
]

对于项目应用:

project/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/ 目录中有 css 格式。

我不知道为什么,鉴于我的 url 模式,我无法从项目应用程序中访问 /web。在我的projects.html 中,我有一个将web.html 称为“projects/web”的链接,它产生404.html。我是否需要始终在主应用程序之外链接绝对地址? IE。项目应用程序中作为 www.site.com/projects/link 提供的任何文件?

【问题讨论】:

    标签: django url routes


    【解决方案1】:

    include 用于不带斜线的网址(例如r'^projects')是非常不寻常的。这意味着您在 /projectsweb/projects/web 上提供内容。

    我会尝试从您的 url 配置中删除不带斜杠的包含。

    然后,只要 APPEND_SLASH 设置为 True 并且您安装了通用中间件,Django 就会从不带斜杠的 url 重定向到带斜杠的 url。例如,它将从www.site.com/projects 重定向到www.site.com/projects/

    这可能会修复您的 CSS 格式。如果没有,您将拥有一个简单的 URL 配置,因此更容易发现其他问题。

    【讨论】:

      猜你喜欢
      • 2015-05-02
      • 1970-01-01
      • 2019-01-14
      • 1970-01-01
      • 2014-05-21
      • 2016-08-04
      • 2011-09-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多