當前位置:成語大全網 - 書法字典 - 了解django如何在書中編寫views.py。

了解django如何在書中編寫views.py。

從哪裏?django.core.urlresolvers?進口?反向_懶惰

從哪裏?姜戈。捷徑?進口?重定向?get_object_or_404

從哪裏?django.forms.models?進口?模型表單_工廠

從哪裏?django.apps?進口?應用程序

從哪裏?django.views.generic.base?進口?TemplateResponseMixin,?視角

從哪裏?django.views.generic.list?進口?列表視圖

從哪裏?django.views.generic.edit?進口?創建視圖,更新視圖,刪除視圖

從哪裏?大括號。視圖?進口?LoginRequiredMixin,?權限要求最小

從哪裏?大括號。視圖?進口?CsrfExemptMixin,?jsonrequestsresponsemixin

從哪裏?。模特?進口?當然?模塊,?內容

從哪裏?。表格?進口?模塊集合

從哪裏?django.db.models?進口?數數

從哪裏?。模特?進口?科目

從哪裏?django.views.generic.detail?進口?詳細視圖

從哪裏?學生。表格?進口?課程註冊表

#?創造?妳的?觀點?給妳。

上課?OwnerMixin(對象):

def?get _ query set(self):

qs?=?super(owner min,?自我)。get_queryset()

回歸?QS . filter(owner = self . request . user)

上課?OwnerEditMixin(對象):

def?form _ valid(self,?表單):

表單。實例。所有者?=?自我。請求。用戶

回歸?super(OwnerEditMixin,?自我)。form_valid(表單)

上課?OwnerCourseMixin(OwnerMixin,?LoginRequiredMixin):

模特?=?課程

菲爾茲?=?【‘主題‘,?標題‘,?鼻涕蟲?概述‘】

成功_url?=?reverse _ lazy(‘管理課程列表‘)

上課?OwnerCourseEditMinxin(OwnerCourseMixin,?OwnerEditMixin):

菲爾茲?=?【‘主題‘,?標題‘,?鼻涕蟲?概述‘】

成功_url?=?reverse _ lazy(‘管理課程列表‘)

模板名稱?=?courses/manage/course/form . html

上課?ManageCourseListView(OwnerCourseMixin,?列表視圖):

模板名稱?=?courses/manage/course/list . html

上課?CourseCreateView(permissionrequiredmin,

OwnerCourseEditMinxin,

創建視圖):

需要權限?=?courses.add_course

上課?CourseUpdateView(permissionrequiredmin,

OwnerCourseEditMinxin,

更新視圖):

需要權限?=?‘courses . change _ course’

上課?CourseDeleteView(permissionrequiredminix,

OwnerCourseMixin,

刪除視圖):

模板名稱?=?courses/manage/course/delete . html

成功_url?=?reverse _ lazy(‘管理課程列表‘)

需要權限?=?courses.delete_course

上課?CourseModuleUpdateView(TemplateResponseMixin,?視圖):

模板名稱?=?courses/manage/module/formset . html

當然?=?沒有人

def?get _ formset(self,?數據=無):

回歸?ModuleFormSet(instance = self . course,

數據=數據)

def?派遣(自己,?請求,?pk):

自學課程?=?get_object_or_404(當然,?id=pk,?所有者=請求。用戶)

回歸?super(CourseModuleUpdateView,?自我)。調度(請求,?pk)

def?得到(自己,?請求,?*args,* *誇脫):

表單集?=?self.get_formset()

回歸?self . render _ to _ response({‘course‘:自學課程,

表單集“:?表單集})

def?發布(自我,?請求,?*args,* *誇脫):

表單集?=?self . get _ formset(data = request。帖子)

如果?formset.is_valid():

formset.save()

回歸?重定向(“管理課程列表”)

回歸?self . render _ to _ response({‘course‘:自學課程,

表單集“:?表單集})

上課?ContentCreateUpdateView(TemplateResponseMixin,?視圖):

模塊?=?沒有人

模特?=?沒有人

obj?=?沒有人

模板名稱?=?courses/manage/content/form . html

def?get _ model(self,?型號名稱):

如果?型號名稱?在?【‘文本‘,?視頻‘,?圖像‘,?文件“】:

回歸?apps . get _ model(app _ label =‘courses‘,

型號名稱=型號名稱)

回歸?沒有人

def?get _ form(self,?型號?*args,* *誇脫):

形式?=?modelform_factory(模型,?exclude =【‘所有者‘,

訂單‘,

已創建‘,

已更新‘】)

回歸?表單(*args,?* *誇脫)

def?派遣(自己,?請求,?模塊id,?型號名稱?id =無):

自我模塊?=?get_object_or_404(模塊,

id =模塊標識,

course__owner=request.user)

自我模型?=?self.get_model(模型名稱)

如果?id:

self.obj?=?get _ object _ or _ 404(self . model,?id=id,?所有者=請求。用戶)

回歸?super(ContentCreateUpdateView,?自我)。調度(請求,?模塊id,?型號名稱?id)

def?得到(自己,?請求,?模塊id,?型號名稱?id =無):

形式?=?self . get _ form(self . model,?instance=self.obj)

回歸?self . render _ to _ response({‘form:‘?形式?對象“:?self.obj})

def?發布(自我,?請求,?模塊id,?型號名稱?id =無):

形式?=?self . get _ form(self . model,

instance=self.obj,

數據=請求。帖子,

文件=請求。文件)

如果?form.is_valid():

obj?=?form . save(commit = False)

所有者?=?請求。用戶

obj.save()

打印?id,?& amp& amp& amp& amp& amp& amp& amp& amp& amp& amp& amp;‘

如果?不是嗎?id:

打印?'****************'

內容。對象。創建(模塊=自身。模塊,

item=obj)

打印?'****************'

回歸?重定向(‘模塊內容列表‘,?self.module.id)

回歸?self . render _ to _ response({‘form:‘?形式?對象“:?self.obj})

上課?ContentDeleteView(視圖):

def?發布(自我,?請求,?id):

內容?=?get_object_or_404(內容,

id=id,

模塊_ _課程_ _所有者=請求。用戶)

模塊?=?內容。模塊

content.item.delete()

內容。刪除()

回歸?重定向(‘模塊內容列表‘,?module.id)

上課?ModuleContentListView(TemplateResponseMixin,?視圖):

模板名稱?=?courses/manage/module/content _ list . html

def?得到(自己,?請求,?模塊id):

模塊?=?get_object_or_404(模塊,

id =模塊標識,

course__owner=request.user)

回歸?self . render _ to _ response({‘module‘:模塊})

上課?ModuleOrderView(csrfexamptmixin,

JsonRequestResponseMixin,

視圖):

def?發布(自我,?請求):

為了什麽?id,?訂單?在?self.request_json.items():

module . objects . filter(id = id,

course__owner=request.user)。更新(訂單=訂單)

回歸?self . render _ JSON _ response({‘saved‘:好的‘})

上課?ContentOrderView(csrfexamptmixin,

JsonRequestResponseMixin,

視圖):

def?發布(自我,?請求):

為了什麽?id,?訂單?在?self.request_json.items():

內容。對象。過濾器(id=id,

模塊_ _課程_ _所有者=請求。用戶)

。更新(訂單=訂單)

回歸?self . render _ JSON _ response({‘saved‘:好的‘})

上課?course listview(TemplateResponseMixin,?視圖):

模特?=?課程

模板名稱?=?courses/course/list . html‘

def?得到(自己,?請求,?主題=無):

科目?=?Subject.objects.annotate(

total _ courses = Count(‘courses‘)

)

課程?=?Course.objects.annotate(

total _ modules = Count(‘模塊‘)

)

如果?主題:

主題?=?get_object_or_404(主題,?slug =主題)

課程?=?courses . filter(subject =主題)

打印?'***********',?科目?課程?科目

回歸?self . render _ to _ response({‘sub gets:主題,

主題“:?主題,

‘課程’:課程})

上課?課程詳細視圖(詳細視圖):

模特?=?課程

模板名稱?=?courses/course/detail.html

def?get _ context _ data(self,?* *誇脫):

語境?=?超級(CourseDetailView,

自我)。get _ context _ data(* * kwargs)

上下文【enroll _ form】?=?課程註冊表(

initial = {‘course:‘?self.object})

回歸?語境