Adding/Removing url 运行时来自 django 的模式
Adding/Removing url patterns from django during runtime
例如我的 urls.py-
中有一个 url
url(r'^my-url/$', views.my_view)
现在,对于视图中的特定操作,我想从 url 模式中删除此 url 并在运行时添加一个新的 url。有可能吗,如果可以,怎么办?
在运行时更改 url 处理程序不是最佳实践,您可以在数据库中设置检查点并处理所有传入请求
models.py
class Version(models.Model):
version_number = models.IntegerField()
is_latest = models.BooleanField(default=False)
urls.py
url(r'^handler/(?P<version>\d+)/$', views.handler)
views.py
from django.shortcuts import get_object_or_404
def handler(request, version):
obj = get_object_or_404(Version, version_number=4)
if obj.is_latest:
return render(request,'base.html')
else:
return render(request, 'old.html')
以上代码仅授权版本 4 ( /handler/4
)
例如我的 urls.py-
中有一个 urlurl(r'^my-url/$', views.my_view)
现在,对于视图中的特定操作,我想从 url 模式中删除此 url 并在运行时添加一个新的 url。有可能吗,如果可以,怎么办?
在运行时更改 url 处理程序不是最佳实践,您可以在数据库中设置检查点并处理所有传入请求
models.py
class Version(models.Model):
version_number = models.IntegerField()
is_latest = models.BooleanField(default=False)
urls.py
url(r'^handler/(?P<version>\d+)/$', views.handler)
views.py
from django.shortcuts import get_object_or_404
def handler(request, version):
obj = get_object_or_404(Version, version_number=4)
if obj.is_latest:
return render(request,'base.html')
else:
return render(request, 'old.html')
以上代码仅授权版本 4 ( /handler/4
)