從哪裏?姜戈。捷徑?進口?重定向?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})
回歸?語境