简介:许多朋友问有关Django如何调用视图的问题。首席执行官在本文中注明将为您提供详细的答案,以供所有人参考。我希望这对每个人都会有所帮助!让我们一起看看!
有三种方法:
1.在模板中的HTML文件中,包含此功能的JS文件直接嵌入HTML中。
2.通过JS中的AJAX打开链接,例如/admin/url?key = value,然后keyvlaue = request.get.get.get.get('key',none)在admin.py中的url方法中获取此value,然后py进行一些处理后,返回html代码的一部分将此JS函数到JS,然后将其添加到JS中的页面中,而无需刷牙:$(“ #id”)。html(xmlhttp.responsetext);
3.基本上与上述相同,适用于Ajax进行实施,但是在PY处理后返回的不是实质性的HTML,而是MSG指令。接收JS后,JS函数与AJAX相关。例如,JS函数。例如,if(xmlhttp.responsetext =='ok')fun();
我希望你能够明白。
直接在视图中导入相应的模型,然后调用模型中的参数或方法。您需要根据代码的特定情况灵活更改。
Amway Django学习网站Django高级教程
根据您的指导方法来看上面的图片,仅跑步视图就可以了
但是,它不能在Django中使用。运行Django项目时,当前目录实际上是整个项目的根目录
您可以在视图目录中使用无关OS,然后打印(OS.GetCWD())查看当前目录:
当前目录打印是整个项目的根目录。我的是E:mypythonday51 ... blw:
你在这里g:.... nnno:
您必须在Anno目录中导入data_model.py。您是否必须带上应用名称才能输入子级目录?
而且还有一个问题:在未来的开发中,它很可能在不同应用程序下具有同名模块或方法。例如,您在这里有三个应用程序,App01,App02,App03,这三个应用程序具有COMMON_MODEL。那么区别到底是什么?因此,最好将应用程序名称带到前面。
但是真的想使用它,您可以使用:来自.common_model导入data_model
[。]指当前文件的目录,该目录是相对路径导入的
看来是否这样写是没有错误的。这是错误的吗?它应该是视图,对吗?
来自django.core.urlresolvers import reververs_lazy
来自django.shortcuts导入重定向,get_object_or_404
来自django.forms.models导入modelform_factory
来自django.apps导入应用程序
从django.views.gneric.base导入templateresmixin,查看,查看
来自django.views.gneric.list导入listView
来自django.views.gneric.edit import createview,updateView,deleteview
从括号中。视图导入登录MIXIN,许可Mixin
从牙套中。
从。模型导入课程,模块,内容
来自.forms导入模块Formset
从django.db.models进口计数
来自.models导入主题
来自django.views.gneric.detail导入详细信息
来自学生。Forms导入课程enrollolform
#在这里创建您的观点。
class ownermixin(对象):
def get_queryset(self):
qs = super(superermixin,self).get_queryset()
返回QS.Filter(所有者= seld.request.user)
class eslowNitMixin(对象):
def form_valid(self,form):
form.instance.owner = self.request.user
返回super(outereditmixin,self).form_valid(form)
class ownerCoursemixin(ownermixin,loginrequiredmixin):
模型=课程
fields = ['主题','title','slug','概述']
success_url = reverse_lazy('manage_course_list')
class ownercourseeditminxin(ownererCoursemixin,eslowitMixin):
fields = ['主题','title','slug','概述']
success_url = reverse_lazy('manage_course_list')
template_name ='courses/manage/course/form.html'
类ManageCourSelistView(OholderCoursemixin,ListView):
template_name ='courses/manage/course/list.html'
班级CourseCreateaTeview(许可证
ownercourseeditminxin,
CreateView:
许可证='courses.add_course'
课程UpdateView(许可证
ownercourseeditminxin,
UpdateView:
cermission_required ='courses.change_course'
COURSELETEVIEW班级(许可证
ownercoursemixin,
Deleteview:
template_name ='courses/manage/course/delete.html'
success_url = reverse_lazy('manage_course_list')
cermission_required ='courses.delete_course'
coursemoduleupdateview(templateresponsemixin,查看):
template_name ='courses/manage/module/formset.html'
课程=无
def get_formset(seld,data = none):
返回moduleformset(instance = self.course,
数据=数据)
DEF调度(自我,请求,PK):
self.course = get_object_or_404(课程,id = pk,所有者= request.user)
返回超级(coursemoduleupdateview,self).dispatch(请求,PK)
def获取(自我,请求,*args,** kwargs):
formSet = self.get_formset()
返回selder_to_response({'course':self.course,
'FormSet':FormSet})
def post(self,request,*args,** kwargs):
formSet = self.get_formset(data = request.post)
如果formset.is_valid():
formSet.save()
返回redirect('manage_course_list')
返回selder_to_response({'course':self.course,
'FormSet':FormSet})
类ContentCreateupDateView(Templateresponsemixin,查看):
模块=无
模型=无
obj =无
template_name ='courses/manage/content/form.html'
def get_model(self,model_name):
如果在['text',''视频','image','file'中中的model_name]:
返回apps.get_model(app_label ='courses',
model_name = model_name)
没有返回
def get_form(self,model,*args,** kwargs):
form = modelm_factory(model,dubl = ['所有者',,
'命令',
“创建”,
'更新'])
返回表格(*args,** kwargs)
def dispatch(self,request,module_id,model_name,id = none):
self.module = get_object_or_404(模块,
id = module_id,
cousse __owner = request.user)
self.model = self.get_model(model_name)
如果ID:
self.obj = get_object_or_404(self.model,id = id = id,所有者= request.user)
返回super(contentCreateupDateView,self).dispatch(请求,module_id,model_name,id)
def get(self,request,module_id,model_name,id = none):
form = self.get_form(self.model,instance = self.obj)
返回self.render_to_response({'form':form,'object':self.obj})
def post(self,request,module_id,model_name,id = none):
form = self.get_form(self.model,
实例= self.obj,
data = request.post,
文件= request.files)
如果form.is_valid():
obj = form.save(commit = false)
obj.owner = request.user
obj.save()
打印ID,''
如果不是ID:
打印 '******************
content.objects.create(模块= seld.module,
项目= OBJ)
打印 '******************
返回redirect('module_content_list',self.module.id)
返回self.render_to_response({'form':form,'object':self.obj})
类ContentDeleteview(视图):
DEF帖子(自我,请求,ID):
content = get_object_or_404(内容,内容,
id = id,
模块__course__owner = request.user)
模块= content.module
content.item.delete()
content.delete()
返回redirect('module_content_list',module.id)
类ModulecontentListView(Templateresponsemixin,查看):
template_name ='courses/manage/module/content_list.html'
def get(self,request,module_id):
模块= get_object_or_404(模块,
id = module_id,
cousse __owner = request.user)
返回selder_to_response({'module':module})
类ModuleDorderView(CSRFEXEMPTMIXIN,
jsonrequestresponsemixin,
看法:
def post(自我,请求):
对于ID,请在self.request_json.items()中订购:
module.objects.filter(id = id,
course__owner = request.user).update(订单=订单)
返回self.render_json_response({'saved':'ok'})
类ContentOrderView(CSRFExemptMixin,
jsonrequestresponsemixin,
看法:
def post(自我,请求):
对于ID,请在self.request_json.items()中订购:
content.objects.filter(id = id,
模块__course__owner = request.user)
.update(订单=订单)
返回self.render_json_response({'saved':'ok'})
COURSSELISTVIEW(Templateresponsemixin,查看):
模型=课程
template_name ='courses/course/list.html'
def get(seld,请求,主题=无):
主题= object.objects.annotate
total_courtes = count('课程')
治愈
课程= course.objects.annotate(
total_modules = count('模块')
治愈
如果主题:
主题= get_object_or_404(主题,slug =主题)
课程=课程.filter(主题=主题)
打印“ ************”,主题,课程,主题
返回self.render_to_response({'subjets':主题,
“主题”:主题,
“课程”:课程})
coper coursedetailview(详细信息):
模型=课程
template_name ='课程/课程/详细信息html'
def get_context_data(self,** kwargs):
context = super(coursedetailview,
self).get_context_data(** kwargs)
context ['enroll_form'] = courseenrollform(
初始= {'course':self.Object})
返回上下文
问题在于测试= 1实际定义了局部变量测试,该测试隐藏了全局范围中的测试变量。
为了指示全局测试变量的使用,您需要使用全局关键字。
来自django.http导入httpresponse
测试= 0
DEF A(请求):
全球测试
测试= 1
返回httpresponse('查看a:test =%d'%测试)
DEF B(请求):
全球测试
测试+= 1
返回httpresponse('视图B:test =%d'%测试)
结论:以上是CTO首席执行官提出的Django的全部内容,向您注明了Django如何调用视图。我希望这对每个人都会有所帮助。如果您仍然想了解有关此信息的更多信息,请记住收集并关注此网站。