to:
url(r'^download/template/(?P<object_id>\d+)/$', views.myview().myfunction,model=models.userModel, name="sample")
Powinno być:
url(r'^download/template/(?P<object_id>\d+)/$', views.myview.as_view(model=models.userModel), name="sample")
Zobacz docs
Aktualna implementacja nie jest bezpieczeństwo wątków. Na przykład:
from django import http
from django.contrib.auth.models import User
from django.views import generic
class YourView(generic.TemplateView):
def __init__(self):
self.foo = None
def your_func(self, request, object_id, **kwargs):
print 'Foo', self.foo
self.foo = 'bar'
return http.HttpResponse('foo')
urlpatterns = patterns('test_app.views',
url(r'^download/template/(?P<object_id>\d+)/$', YourView().your_func,
kwargs=dict(model=User), name="sample"),
)
można się spodziewać, że do drukowania 'Foo Żaden'? Dobrze uważać przyczyną wystąpienie jest współużytkowane przez wniosków:
Django version 1.4.2, using settings 'django_test.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Foo None
[03/Dec/2012 08:14:31] "GET /test_app/download/template/3/ HTTP/1.1" 200 3
Foo bar
[03/Dec/2012 08:14:32] "GET /test_app/download/template/3/ HTTP/1.1" 200 3
Więc, gdy nie jest wątku bezpieczne, nie można zakładać, że będzie w stanie czystym, gdy żądanie rozpoczyna się - inaczej niż w przypadku korzystania as_view() .
dziękuje kumplu, dokładnie to, co chcę – user825904
@jpic Czy mógłbyś rozwinąć? – Medorator
@buffer: prawdopodobnie jpic czuje [ich odpowiedź] (http://stackoverflow.com/a/13678956) jest lepszym podejściem, ponieważ istnieje problem z bezpieczeństwem wątków. –