【问题标题】:URLs not working网址不起作用
【发布时间】:2011-02-15 23:43:57
【问题描述】:

我的应用程序的 URL 如下所示:

(r'^admin/', include(admin.site.urls)),
 (r'^contractManagement/login', 'django.contrib.auth.views.login', {'template_name': 'login.html'},()),
 (r'^contractManagement/logout', 'contractManagement.contracts.views.logout_view'),
 (r'^contractManagement/', 'contractManagement.contracts.views.index'),
 (r'^accounts/profile/(?P<contract>[^/]+)/edit$', 'contractManagement.contracts.views.editContract'), 
 (r'^accounts/profile/(?P<contract>[^/]+)/$', 'contractManagement.contracts.views.viewContract'),
 (r'^accounts/profile/$', 'contractManagement.contracts.views.loggedIn'),
 (r'^accounts/profile/newContract$', 'contractManagement.contracts.views.addContract'),
 (r'^accounts/profile/newClient$', 'contractManagement.contracts.views.addClient'),            
 (r'^accounts/profile/logout$', 'django.contrib.auth.views.logout', {'template_name': 'LoggedOut.html'},()), 

我现在收到一个错误,没有合同与给定的查询匹配。这是一个 404 错误。我不知道为什么/accounts/profile/newContract/ 的视图不需要合同。如果您需要其他任何内容,请发表评论。

【问题讨论】:

    标签: django django-urls


    【解决方案1】:

    Django URL 模式是按顺序处理的。看起来您的 /accounts/profile/newContracts/ URL 与您的 r'^accounts/profile/(?P&lt;contract&gt;[^/]+)/$' 模式匹配。

    尝试将r'^accounts/profile/newContract$' 模式向上移动。 (并修正缺失的 's' 错字)

    但更重要的是,请确保您的 URL 方案没有歧义。

    【讨论】:

    • 是的,我知道这是我兄弟的一个小测试应用程序,用于展示在 Rails 上使用 Django 的简单性。
    • 已排序。它需要更高和 r'^accounts/profile/newContract/$'
    • 尾随斜杠/无斜杠怎么样?
    【解决方案2】:

    (r'^accounts/profile/newContract$' newContract - 没有 s。 然后你去 /accounts/profile/newContracts 。以 s 结尾 如果您使用 newContracts ,它将与此 url 匹配: (r'^accounts/profile/(?P[^/]+)/$', 'contractManagement.contracts.views.viewContract'), 并且会寻找新的合同

    【讨论】:

    • 对不起,我的错误是打字很快,并不是故意放在那里的。
    猜你喜欢
    • 2018-10-17
    • 2015-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-10
    • 2018-09-18
    相关资源
    最近更新 更多