第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

高手接招! 在django的通用視圖里面做判斷

高手接招! 在django的通用視圖里面做判斷

慕田峪7331174 2019-02-20 21:17:08
我用django的通用視圖代碼是這樣的: class IndexView(BaseView, ListView): ismobile = True if ismobile: template_name = "m/index.html" else: template_name = 'index.html' context_object_name = 'article_list' paginate_by = settings.PAGE_NUM # 分頁--每頁的數(shù)目 def get_queryset(self): article_list = Article.objects.filter(status=0) return article_list def get_context_data(self, **kwargs): # 輪播 kwargs['home']= True return super(IndexView, self).get_context_data(**kwargs) 大家可以幫我看下,我代碼的第一句是ismobile = True意思就是判斷是不是手機端方訪問的.我的目的是想改成通過requests來判斷,比如把代碼改成這樣 class IndexView(BaseView, ListView): #手機訪問,用手機模板 if 'm.maidu.com' in self.request.get_host(): template_name = "m/index.html" 電腦訪問用電腦模板 else: template_name = 'index.html' ....... 但是代碼直接這樣寫會出錯,會提示self不存在,我想下,如何優(yōu)雅的解決這個問題?
查看完整描述

3 回答

?
森林海

TA貢獻2011條經(jīng)驗 獲得超2個贊

試試這樣的,不是用self,你類中應(yīng)該寫一個方法,這個方法其中有一個參數(shù) 是request

from django.utils.deprecation import MiddlewareMixin

class MultipleProxyMiddleware(MiddlewareMixin):

FORWARDED_FOR_FIELDS = [
    'HTTP_X_FORWARDED_FOR',
    'HTTP_X_FORWARDED_HOST',
    'HTTP_X_FORWARDED_SERVER',
]

def process_request(self, request):
    """
    Rewrites the proxy headers so that only the most
    recent proxy is used.
    """
    for field in self.FORWARDED_FOR_FIELDS:
        if field in request.META:
            if ',' in request.META[field]:
                parts = request.META[field].split(',')
                request.META[field] = parts[-1].strip()
查看完整回答
反對 回復(fù) 2019-03-04
?
慕無忌1623718

TA貢獻1744條經(jīng)驗 獲得超4個贊

繼承View類
在class IndexView(BaseView, ListView):添加View,即:
class IndexView(BaseView, ListView,View):就可以調(diào)用self.request

查看完整回答
反對 回復(fù) 2019-03-04
  • 3 回答
  • 0 關(guān)注
  • 600 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號