如何获取django应用程序的当前基本URL路径



我正在制作一个可重复使用的Django应用程序,假设它的名字是Polls。无论在其父应用程序的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

因此,polls应用程序有自己的urls.py和自己的views.py,它们可以链接到任何其他应用程序,例如通过向mysite/mysite/urls.py添加一行来链接mysite,例如本例中的第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'))
]

因此,这将更改为https://somedomain.com/another-path/the-relative-page-link

我的问题是;民意测验";应用程序包含自定义javascript代码,这些代码与表示服务器端API的另一个视图通信。因此,为了使这种通信能够正常工作,无论polls URL是在/polls下还是在/另一个路径下,我需要一种方法来动态查找polls应用程序的当前路径,以便它能够生成可以与其API通信的正确javascript代码。我该如何做到这一点,或者在制作可重复使用的应用程序时,处理这种情况的传统方法是什么?

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页的

最新更新