简体   繁体   English

在运行时从Django添加/删除URL模式

[英]Adding/Removing url patterns from django during runtime

For example I have a url in my urls.py- 例如,我的urls.py-中有一个网址

url(r'^my-url/$', views.my_view)

Now on a particular action from views, I want to remove this url from urlpatterns and add a new url during runtime. 现在从视图执行特定操作,我想从urlpatterns中删除此url,并在运行时添加新的url。 Is it possible, if so, how? 如果可能,怎么可能?

Changing url handler during runtime is not best practice instead you could have the checkpoint in db and handle all the incoming request 在运行时更改URL处理程序不是最佳实践,而是可以在db中设置检查点并处理所有传入请求

models.py models.py

class Version(models.Model):
    version_number = models.IntegerField()
    is_latest = models.BooleanField(default=False)

urls.py urls.py

url(r'^handler/(?P<version>\d+)/$', views.handler)

views.py 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')

Above code authorise only version 4 ( /handler/4 ) 上面的代码仅授权版本4( /handler/4

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM