重新加载所有 django url 文件而不重新启动服务器

发布于 2025-01-13 06:10:01 字数 909 浏览 0 评论 0原文

我需要更改站点中的网址而不重新加载服务器。

使用:Django 4.0.2

with open('settings.json', 'r+') as f:
    data = json.load(f)
    if data['urls']['posts']["type"] != 'Custom':
        if data['urls']['posts']["type"] == 'Name':
            urlpatterns.append(path('<slug:slug>/', details))
        if data['urls']['posts']["type"] == 'Id':
            urlpatterns.append(path('<int:pk>/', details))

因此,如果参数 type 发生变化,django 不会看到这一点,因为 urls.py 仅在服务器重新加载时运行

也许我们可以使服务器重新加载,但肯定不能手动 所以我用了这个:

import sys
from django.conf import settings


def reload_urlconf(urlconf=None):
    if urlconf is None:
        urlconf = settings.ROOT_URLCONF
    if urlconf in sys.modules:
        reload(sys.modules[urlconf])

我有一个错误:

未解析的引用“重新加载”

I need to change my urls in site without reloading server.

Using: Django 4.0.2

with open('settings.json', 'r+') as f:
    data = json.load(f)
    if data['urls']['posts']["type"] != 'Custom':
        if data['urls']['posts']["type"] == 'Name':
            urlpatterns.append(path('<slug:slug>/', details))
        if data['urls']['posts']["type"] == 'Id':
            urlpatterns.append(path('<int:pk>/', details))

So if param type change, django don't see that, cause urls.py runs only on server reload

Probably we can make server reload, but for sure not manualy
So i used this:

import sys
from django.conf import settings


def reload_urlconf(urlconf=None):
    if urlconf is None:
        urlconf = settings.ROOT_URLCONF
    if urlconf in sys.modules:
        reload(sys.modules[urlconf])

I had an error:

Unresolved reference 'reload'

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文