2013-02-18 2 views
4

Итак, я только начал переносить свой старый код на классы, основанные на классах, и я все еще новичок в этом. Мой вопрос связан с Django mixins, где у меня есть mixin, который я собираюсь использовать в различных классах для проверки некоторой информации. Проблема в том, что я не знаю, как получить доступ к информации, которую он возвращает, не получив 500 внутренних ошибок.Правильное использование Django Mixins

class CheckTokenMixin(object): 
    def request_token(self,request): 
     params = {'username':settings.OAUTH_USERNAME,'password':hashlib.sha256(settings.OAUTH_PASSWORD).hexdigest()} 
     req = Request(settings.REMOTE_SERVER+'oauth', urllib.urlencode(params)) 
     return json.loads(urlopen(req).read()) 

    def get_valid_token(self): 
     if datetime.datetime.now() > request.session['access_token'].creation_date + datetime.timedelta(days=1): 
      temp = self.request_token(request) 
      tokenobj = AccessToken.objects.all()[:1].get() 
      tokenobj.access_token = temp['token'] 
      tokenobj.creation_date = datetime.datetime.now() 
      tokenobj.save() 
      request.session['access_token'] = tokenobj 

     return request.session['access_token'] 

    def get_context_data(self, **kwargs): 
     ctx = super(CheckTokenMixin, self).get_context_data(**kwargs) 
     ctx['access_token'] = self.get_valid_token() 
     return ctx 

class RateAppView(LoginRequiredMixin, JSONResponseMixin, AjaxResponseMixin, CheckTokenMixin, View): 

    @method_decorator(csrf_protect) 
    def dispatch(self, *args, **kwargs): 
     return super(RateAppView, self).dispatch(*args, **kwargs) 

    def post_ajax(self, request, username): 
     u = get_object_or_404(User, pk=current_user_id(request)) 
     city_obj = City.objects.get(id=request.POST.get('city_id', None)) 
     x = self.get_valid_token 
     print "teste: " , x.access_token 
     print "teste2: " , self.get_context_data.['access_token'].access_token 

я хочу что-то вроде

self.get_valid_token

или

self.get_context_data. [ 'Access_token']. Access_token

для доступа к данным из моего миксина, как я могу это сделать правильно?

ответ

4

self.get_valid_token() будет правильным. Однако у вас есть несколько ошибок в этом методе, которые, без сомнения, вызывают проблему: в частности, вы ссылаетесь на request, не определяя его в какой-либо точке. Я ожидаю, что вы имеете в виду self.request.

+0

спасибо, что это было;) – psychok7

Смежные вопросы