2017-08-30 2 views
-2

Je veux passer une variable à template quand j'obtiens cette erreur. J'ai vu beaucoup de réponses stackoverflow mais ça dit, Django envoie Self par défaut c'est pourquoi il dit que j'envoie 3 arguments. Mais ce qui est la solution de ce que je ne reçois pasrender() prend exactement 2 arguments (3 donnés) Vue Django pendant que je veux passer varibale

Url.py

url(r'^(?P<lid>\d+)/labels/$' , 
login_required(LayerView.as_view('ImportLabelView')), 
name='mapport.maps.layers.importlabel') 

view.py

return self.render('mapport/maps/layers/Labels_detail.html' , {'lid': self.layer.id}) 

Alors, comment puis-je activer mon 3ème argument de passer?

EDIT: LayerView utiliser from mapport.core.views import BaseView et son code est

class LayerView(BaseView): 
    def __init__(self): 
     # super(LayerView, self).__init__() 
     self.tab = 'layers' 
+0

Essayez de changer 'self.render (...)' à ' rendre (...) '. – ikkuh

+1

Quel vue générique la sous-classe 'LayerView'? –

+0

@ikkuh donne une erreur. – Learner

Répondre

1

Vous pouvez utiliser le raccourci render directement:

from django.shortcuts import render 
.... 
render(
    request, 
    'mapport/maps/layers/Labels_detail.html', 
    {'lid': self.layer.id}) 
+0

L'objet 'str' n'a pas d'attribut 'META' – Learner

+0

Veuillez ajouter le code pour LayerView dans votre question. Plus précisément, la méthode appelant rendre dans ce cas. –

+0

fait vérifier s'il vous plaît – Learner