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

jef*_*eff 3 python django url default view

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

projectname/appname/viewname
Run Code Online (Sandbox Code Playgroud)

但是,如果我不想appname出现在"默认"应用程序的URL中,我该如何配置我的URL呢?

projectname/viewname

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

PS:当然我的主要目标是能够使用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')),    
)
Run Code Online (Sandbox Code Playgroud)

所以当我将项目部署到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/
Run Code Online (Sandbox Code Playgroud)

我知道这应该是,但我如何修复(或破解)这个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'),
)
Run Code Online (Sandbox Code Playgroud)

编辑

在尝试了@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/
Run Code Online (Sandbox Code Playgroud)

Anz*_*zel 9

尝试用以下方式更改项目urls.py:

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

这将包括myapp1.urls他们所有人追加的所有网址/.

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

要注意网址冲突,如果你的项目有一个^view1/$网址,它会与你app1的网站发生冲突view1.