7
Oturumda yer alan verilere göre iş parçacığı güvenli bir şekilde dinamik olarak urlpatterns oluşturmanız gerekir. Django, dinamik URL'ler, iş parçacığı güvenliği
Ben url sonrasına kadar çözülmesi defers özel URLResolver üzerinden bu uyguladı. Bir middleware gelen request.urlconf ayarlama hakkında bilmiyorum; ama yapamayacağım nedenler var (Django önbellek çözücüleri ve benim durumumda sınırsız bellek kullanımıyla sonuçlanacaktı). Ben uygulanmasına bakmak ve eğer doğru iş parçacığı güvenliği ele almadığınızı görmek için birine ihtiyacım var.Teşekkürler!
kodu:myapp/urls.py:
urlpatterns = patterns('',
# other urlconfs
url(r'^/foo', include('foo.urls')),
)
foo/urls.py:
import threading
from django.core.urlresolvers import ResolverMatch
class MyResolver(RegexURLResolver):
def __init__(self):
self.resolver = threading.local()
return super(MyResolver, self).__init__(r'', None)
@property
def urlconf_module(self):
return self.resolver.value
def resolve(self, path):
def view(request):
resolver = request.session.get('myresolver', 'default')
resolver = getattr(import_module('foo.resolvers'), resolver)
self.resolver.value = resolver()
view, args, kwags = super(MyResolver, self).resolve(path)
return view(request, *args, **kwargs)
return ResolverMatch(view,(), {})
urlpatterns = [MyResolver()]
foo/resolvers.py:
class default(object):
@property
def urlpatterns(self):
return patterns('foo.views',
url(r'', 'error'),
)
class test(object):
@property
def urlpatterns(self):
return dynamically_generated_urlpatterns
Neden iş parçacığına ihtiyacınız var? –