簡體   English   中英

正確使用Django Mixins

[英]Proper usage of Django Mixins

所以我剛開始將舊代碼移植到基於類的視圖,我仍然是新的。 我的問題與Django mixins有關,我有一個mixin,我將在各種類中使用它來驗證一些信息。 問題是我不知道如何訪問它返回的信息而不會得到500內部錯誤。

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

從我的mixin訪問數據,我該怎么做正確的方法?

self.get_valid_token()是正確的。 但是,您在該方法中有幾個錯誤,這無疑是導致問題的原因:特別是,您可以在不定義request情況下引用request 我希望你的意思是self.request

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM