¿Cómo puedo pasar kwargs en la URL en django

En el documento django la función url es así.

url(regex, view, kwargs=None, name=None, prefix='') 

tengo esto

 url(r'^download/template/(?P\d+)/$', views.myview().myfunction,model=models.userModel, name="sample") 

Esta es mi opinión

 class myview(TemplateView): def myfunction(self,request, object_id, **kwargs): model = kwargs['model'] 

Me sale este error

 url() got an unexpected keyword argument 'model' 

Está intentando pasar un argumento de palabra clave de model a la función url() ; necesitas pasar un argumento kwargs en su lugar (se necesita un diccionario):

 url(r'^download/template/(?P\d+)/$', views.myview().myfunction, kwargs=dict(model=models.userModel), name="sample") 

Esta:

 url(r'^download/template/(?P\d+)/$', views.myview().myfunction,model=models.userModel, name="sample") 

Debiera ser:

 url(r'^download/template/(?P\d+)/$', views.myview.as_view(model=models.userModel), name="sample") 

Ver docs

Su implementación actual no es segura para subprocesos. Por ejemplo:

 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\d+)/$', YourView().your_func, kwargs=dict(model=User), name="sample"), ) 

¿Esperas que imprima ‘Foo None ‘? Bueno, tenga cuidado porque la instancia se comparte entre solicitudes:

 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 

Por lo tanto, cuando no es seguro para subprocesos, no puede asumir que estará en un estado limpio cuando se inicie la solicitud, a diferencia de cuando se usa as_view ().

Creo que tendrías la misma funcionalidad (y evitarías problemas de subprocesos) si views.py esto en tu views.py

 from django.views.generic import TemplateView from .models import userModel class myview(TemplateView): def myfunction(self, request, object_id, *args, **kwargs): model = userModel # ... Do something with it