如何获取Django应用当前的基本URL路径

ldxq2e6h  于 2023-04-07  发布在  Go
关注(0)|答案(1)|浏览(192)

我正在做一个可重用的Django应用程序,假设它的名字是Polls。这个应用程序应该可以正常工作,无论它在其父应用程序的www.example.com中被配置到什么位置urls.py。
考虑下面的结构,就像Django教程中的那样

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py
    polls/
        __init__.py
        urls.py
        admin.py
        apps.py
        models.py
        views.py

因此,民意调查应用程序有自己的urls.py和自己的views.py,可以链接到任何其他应用程序,例如通过向mysite/mysite/ www.example.com添加一行urls.py例如本示例中的第5行urls.py:

from django.urls import path, include

urlpatterns = [
    path('polls/', include('polls.urls'))
]

在这个例子中,投票应用程序的所有视图都将有一个类似**https://somedomain.com/polls/the-relative-page-link**的链接,但是,即使我们将上面代码中的第5行编辑为其他基本路径,投票应用程序仍然应该正常运行,例如:

urlpatterns = [
    path('another-path/', include('polls.urls'))
]

这样就可以把like改成**https://somedomain.com/another-path/the-relative-page-link**
我的问题是,“polls”应用程序的某些视图包含自定义javascript代码,这些代码与代表服务器端API的另一个视图进行通信。因此,为了使这种通信正常工作,无论polls URL是在**/polls下还是在/another-path**下,我需要一种方法来动态地找到民意调查应用程序的当前路径,以便它可以生成正确的JavaScript代码,可以与其API进行通信。在制作可重用的应用程序时,处理这种情况的传统方法是什么?

juud5qan

juud5qan1#

单位:polls/urls.py

from .view import Http404View
     urlpatterns = [
          ...,
          re_path('^$', Http404View, name='mysite_baseurl'),
     ]

单位:polls/views.py

def Http404View(request):
         raise Http404()

现在,您可以简单地执行reverse('mysite_baseurl')来获取所需的基本目录。
如果有人试图直接去那里,他们会得到404页面

相关问题