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

时间:2015-04-13 21:35:55

标签: python django url view default

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

这样的URL
projectname/appname/viewname

但如果我不希望{“1}}出现在”默认“应用的网址中,该怎么办呢?如何配置我的网址

appname

会从我的默认应用加载视图projectname/viewname吗?

P.S。:当然,我的主要目标是能够使用网址viewname加载默认应用的默认视图。

详细

目前我的ProjectName / urls.py包含:

projectname/

所以当我将项目部署到Heroku并访问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')), ) 时,我收到错误:

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? 提前谢谢!

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

myproject/myapp1/defaultview

修改

在尝试了@Wallace的建议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'), ) 并点击主页后,我现在收到错误:

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

2 个答案:

答案 0 :(得分:9)

尝试使用以下内容更改项目urls.py

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

这将包括myapp1.urls所有追加到/的网址。

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

请注意的网址冲突,如果您的项目有^view1/$网址,则会与app1的{​​{1}}冲突。

答案 1 :(得分:1)

尽量不要在正则表达式中包含您的appname。

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