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

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

Django中的類視圖

Django中的類視圖

慕容3067478 2021-03-22 10:12:33
Django視圖指向一個函數(shù),如果您只想更改一些功能,則可能會出現(xiàn)問題。是的,函數(shù)中可以有數(shù)百萬個關鍵字參數(shù),如果有語句,甚至可以更多,但是我在想更多的面向?qū)ο蠓椒?。例如,我有一個顯示用戶的頁面。該頁面與顯示組的頁面非常相似,但仍與僅使用另一個數(shù)據(jù)模型不太相似。小組也有成員等...一種方法是將視圖指向類方法,然后擴展該類。有沒有人嘗試過這種方法或有其他想法?
查看完整描述

3 回答

?
慕工程0101907

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

我需要使用基于類的視圖,但是我希望能夠在URLconf中使用類的全名,而不必始終在使用它之前實例化視圖類。幫助我的是一個非常簡單的元類:

class CallableViewClass(type):
    def __call__(cls, *args, **kwargs):
        if args and isinstance(args[0], HttpRequest):
            instance = super(CallableViewClass, cls).__call__()            return instance.__call__(*args, **kwargs)        else:
            instance = super(CallableViewClass, cls).__call__(*args, **kwargs)            return instanceclass View(object):
    __metaclass__ = CallableViewClass
    def __call__(self, request, *args, **kwargs):
        if hasattr(self, request.method):
            handler = getattr(self, request.method)            if hasattr(handler, '__call__'):                return handler(request, *args, **kwargs)        return HttpResponseBadRequest('Method Not Allowed', status=405)

現(xiàn)在,我既可以實例化視圖類,也可以將實例用作視圖函數(shù),或者我可以簡單地將URLconf指向我的類,并讓元類為我實例化(并調(diào)用)視圖類。這是通過檢查第一個參數(shù)__call__-如果它是a來實現(xiàn)的HttpRequest,它必須是一個實際的HTTP請求,因為試圖用實例來實例化視圖類是沒有意義的HttpRequest。

class MyView(View):
    def __init__(self, arg=None):
        self.arg = arg
    def GET(request):
        return HttpResponse(self.arg or 'no args provided')@login_requiredclass MyOtherView(View):
    def POST(request):
        pass# And all the following work as expected.urlpatterns = patterns(''
    url(r'^myview1$', 'myapp.views.MyView', name='myview1'),
    url(r'^myview2$', myapp.views.MyView, name='myview2'),
    url(r'^myview3$', myapp.views.MyView('foobar'), name='myview3'),
    url(r'^myotherview$', 'myapp.views.MyOtherView', name='otherview'),)


查看完整回答
反對 回復 2021-03-22
?
縹緲止盈

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

如果您只是顯示模型中的數(shù)據(jù),為什么不使用Django Generic Views?它們的設計使您可以輕松顯示模型中的數(shù)據(jù),而無需編寫自己的視圖以及將URL參數(shù)映射到視圖,獲取數(shù)據(jù),處理邊緣情況,呈現(xiàn)輸出等方面的知識。


查看完整回答
反對 回復 2021-03-22
  • 3 回答
  • 0 關注
  • 293 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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