Django 如何定义主页 URL 的默认应用程序?

Django how to define default app for home URL?

我正在学习 Django,到目前为止我总是不得不使用 URL 之类的

projectname/appname/viewname

但是如果我不希望 appname 出现在 "default" 应用程序的 URL 中怎么办,我该如何配置我的网址以便

projectname/viewname

将从我的默认应用加载视图 viewname

P.S. :当然,我的主要目标是能够使用 URL projectname/ 加载默认视图默认应用程序。

详情

目前我的 ProjectName/urls.py 有这个:

urlpatterns = patterns('',
url(r'^static/(?P<path>.*)$', 'django.views.static.serve',
    {'document_root', settings.STATIC_ROOT}
  ),                                          
    url(r'^admin/', include(admin.site.urls)),
    url(r'^myapp1/', include('myapp1.urls', namespace='myapp1', app_name='myapp1')),
    url(r'^myapp2/', include('myapp2.urls', namespace='myapp2', app_name='myapp2')),    
)

所以当我将我的项目部署到 Heroku 并访问 myproject.heroku.com 时,我收到错误:

Page not found (404)
Request Method: GET
Request URL:    https://myproject.herokuapp.com/
Using the URLconf defined in MyProject.urls, Django tried these URL patterns, in this order:
^static/(?P<path>.*)$
^admin/
^myapp1/
^myapp2/

我知道这是应该的,但我该如何修复(或破解)它才能让 myproject.heroku.com 正常工作?

如果不可行,如何将主页重定向到 myproject/myapp1/defaultview? 提前致谢!

我的应用程序的 urls.py 看起来像这样:

urlpatterns = patterns('myapp1.views',
    url(r'^view1/$', 'view1', name='view1'), # the default view
    url(r'^view2/(?P<oid>\d+)/(?P<pid>\d+)/$', 'view2', name='view2'),
)

编辑

在尝试@Wallace 的建议 url(r'^$', include('myapp1.urls', namespace='myapp1', app_name='myapp1')), 并点击主页后,我现在收到错误消息:

Using the URLconf defined in myproject.urls, Django tried these URL patterns, in this order:
^static/(?P<path>.*)$
^admin/
^$ ^view1/$ [name='view1']
^$ ^view2/(?P<oid>\d+)/(?P<pid>\d+)/$ [name='view2']
^myapp2/

尝试不在正则表达式中包含您的应用程序名称。

url(r'', include('myapp1.urls', namespace='myapp1', app_name='myapp1')),

尝试将您的项目 urls.py 更改为:

url(r'', include('myapp1.urls', ...)

这将包括来自 myapp1.urls 的所有 url,它们都附加到 /

r'^$' 不起作用的原因是因为正则表达式以 $ 结尾,这意味着只能有 1 x url /,并且因为你的app1.urls 只定义了 2 个 url 并且没有 /^$ 等价物,url 解析器将失败。

但是 注意 的 url 冲突,如果您的项目有 ^view1/$ url 它会与您的 app1view1 例如。