【问题标题】:Django URL Mapping: How to remove app name from URL paths?Django URL 映射:如何从 URL 路径中删除应用程序名称?
【发布时间】:2015-01-12 17:23:59
【问题描述】:

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

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

所以这实际上使测试服务器中的 URL 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/ 访问

基本上,我只想从该应用的 url 映射方案中删除应用名称。

我该怎么做?提前致谢。

【问题讨论】:

    标签: python django django-urls


    【解决方案1】:

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

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

    你可以用这样的东西替换它:

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

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

    编辑

    您也可以将bigduck 映射到您的主urls.py,例如

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

    但我在评论中的意思是 URL 的正则表达式出现在您的 urls.py 文件中的顺序很重要,因为 Django 将在第一次匹配时停止,这就是为什么您的所有 URL 都映射到 @987654335 @

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

    【讨论】:

    • 感谢您的快速回复。这与示例索引页面的预期相同。但是对于其他页面,例如: url(r'^register/$', views.register, name='register') 例如,该 URL 映射到 /myapp/register,但即使在更改项目 urls 文件和从修复索引页面的 url 映射中删除“myapp”并不能修复此映射。如果我去 127.0.0.1:8000/register/ 那么我仍然得到 404
    • 尝试按照条目的顺序排列,例如将 r'^register/$ 放在超宽 r'^$' 之前,这样会吞噬一切
    • 你的意思是把它们放在我的 url.py 文件中的“myapp”目录中,对吧?因为由于某种原因,在我将项目文件夹/主 urls 文件更改为排除 /myapp/ 后,我无法在 myapp.urls 文件中使用任何 URL
    • 做了一个编辑,你可能有这个问题:stackoverflow.com/questions/9934969/django-urlpatterns-order
    • 非常感谢您的响应。我认为问题在于我真的不知道如何在项目的主 url.py 文件中映射“myapp”页面。例如,这是在项目的主 urls.py 中映射 bigduck 页面的正确语法吗: url(r'^bigduck/$', myapp.views.bigduck, name='bigduck')
    【解决方案2】:

    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),
    ]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-26
      • 2012-12-24
      • 1970-01-01
      • 1970-01-01
      • 2012-11-24
      • 1970-01-01
      • 1970-01-01
      • 2013-08-09
      相关资源
      最近更新 更多