Django URL Mapping:如何从URL路径中删除应用程序名称?

时间:2014-11-15 10:36:16

标签: python django django-urls

我有一个名为'myapp'的Django应用程序和我的url.py在“myapp”目录中的索引页面:

 url(r'^$', views.index, name='index')

因此,这实际上使测试服务器http://127.0.0.1:8000/myapp/

中的URL成为可能

但是,我不想要这个。我希望每个网址只能在http://127.0.0.1:8000/开始,因此目前只能在测试服务器上的http://127.0.0.1:8000/myapp/bigduck访问该网页,我希望只能在http://127.0.0.1:8000/bigduck/

访问它

基本上,我想从此应用的网址映射方案中删除应用名称。

我该怎么做?提前致谢。

2 个答案:

答案 0 :(得分:4)

您应该查看项目的主urls.py文件(例如,settings.ROOT_URLCONF指向的文件,而不是单个应用内的文件)

在该主urls.py中,您会看到一个条目,其中将myapp的网址映射到网址路径myapp/

您可以使用以下内容替换它:

url(r'^$', 'myapp.urls')

这会将myapp下的所有网址放在顶级路径上,因此您不需要使用myapp/

修改

您还可以在主bigduck中映射urls.py,例如

bigduck/ -> myapp.bigduck
register/ -> register

但我在评论中的意思是,网址的正则表达式在urls.py文件中的显示顺序非常重要,因为Django会在第一场比赛时停止,这就是为什么所有的网址都是映射到myapp

在这里查看数字3 https://docs.djangoproject.com/en/dev/topics/http/urls/#how-django-processes-a-request

答案 1 :(得分:0)

更新2019 / django> = 2.0

编辑主urls.py-与settings.py文件位于同一目录中的主文件。

urlpatterns = [
    # updated so we don't need the myapp prefix
    # path('myapp/', include('myapp.urls')), # old version
    path('', include('myapp.urls')),
    path('admin/', admin.site.urls),
]