为什么不调用视图方法?

Why is views method not being invoked?

我在目录 (RazorWare_Web) 中有一个带有 urls.py 的 Web 目录,如下所示:

from RazorWare_Web.views import home

urlpatterns = patterns('',
                       url('/', home.index, name="index"),
                       url(r'^razorware/', include("RazorCRM_App.urls")),
                       url(r'^admin/', include(admin.site.urls)),
                       )

所以在我的浏览器中,http://localhost:8000/razorware 导航到 home 视图的 index() 方法。我对此有点困惑。我希望 http://localhost:8000/ 会导航到 home。相反,这会产生 url 未找到错误页面。

除此之外,当我从我的 HTML 页面执行 $.getJSON 调用时,真正的问题(我怀疑它与上述问题有关)存在。首先,实际的应用程序存在于兄弟目录下,RazorCRM_App,具有以下内容:

from RazorCRM_App.views import queries

urlpatterns = [
    url(r'query_locale', queries.query_locales, name="query_locales"),
]

当我执行以下脚本时:

function query_locale_by_zip(){
    var post_code = txt_postal.val();
    $.getJSON("query_locale", {post_code: post_code}, function(result){
        console.log("[APP] query locale for: " + post_code + " [returned: " + result.success + "]")
    });
}

...未调用 queries.query_locales 方法。但是,我确实从控制台得到以下输出:

[25/Feb/2015 15:20:51] "GET /razorware/query_locale?post_code=9 HTTP/1.1" 200
[25/Feb/2015 15:20:51] "GET /razorware/query_locale?post_code=92 HTTP/1.1" 200
[25/Feb/2015 15:20:51] "GET /razorware/query_locale?post_code=920 HTTP/1.1" 200
[25/Feb/2015 15:20:52] "GET /razorware/query_locale?post_code=9205 HTTP/1.1" 200
[25/Feb/2015 15:20:52] "GET /razorware/query_locale?post_code=92058 HTTP/1.1" 200

如果有消息说找不到url,我可能会理解。但这看起来很奇怪。

使用 Django 版本 1.7.1 和 Python 3.4.2

你的根 url 应该看起来像 url(r'^$', home.index, name="index") 而你的 query_locale url 应该像 url(r'^query_locale/$', queries.query_locales, name="query_locales").

url dispatcher 有关于 url 如何工作的广泛文档。