Jquery Django中的Ajax调用

Jquery Django中的Ajax调用,jquery,python,ajax,django,Jquery,Python,Ajax,Django,我用的是Django。我为删除按钮创建了一个函数。它工作正常,但问题是:有一个模板在两个地方共享(一个用于url:/employer/job/edit,另一个用于供应商/job/edit),这两个模板都是相同的。我的代码如下所示,与/employer/job/edit配合良好,但不适用于供应商/job/edit。 按钮代码为: <a style="cursor:pointer;" class="delete" data-pk="{{ i.id }}" data-appname="em

我用的是Django。我为删除按钮创建了一个函数。它工作正常,但问题是:有一个模板在两个地方共享(一个用于url:
/employer/job/edit
,另一个用于
供应商/job/edit
),这两个模板都是相同的。我的代码如下所示,与/employer/job/edit配合良好,但不适用于
供应商/job/edit
。 按钮代码为:

<a style="cursor:pointer;" class="delete"
   data-pk="{{ i.id }}" data-appname="employer" data-modelname="office">
    <i class="fa fa-times font-18 iconcolor pt3 float-r" ></i>
</a>
我在view.py中编写的函数是:

def delete_data(request, app_name, model_name, pk):
    try:
        model_name = get_model(app_name, model_name)
        if request.method=='DELETE':
            model_name.objects.get(id=pk).delete()
            return HttpResponse('deleted', status=200)
    except Exception, e:
        return HttpResponse('error', status=500)

怎么了,我正在做。请帮帮我

回答第一条评论中提出的问题,如果您有

  • django.template.context\u处理器.request
    在django>=1.8
  • django<1.8中的处理器请求
将上下文预处理器添加到您的设置中,然后您可以通过
{{request.resolver\u match.app\u name}
访问模板中当前应用的名称

您可以通过上下文提供
模型\u名称
,如果您不使用
模板\u上下文\u处理器
,也可以在此处硬编码appname

视图.py

# other view code ...
c = Context({
    # possibly other context variables
    'current_app': 'employer',
    'model_name': 'office'
})

return render(request, 'my/template.html', c)
这样,链接标记将如下所示

<a ... data-appname="{{ request.resolver_match.app_name }}" 
       data-modelname="{{ model_name }}">...</a>
。。。
或使用硬编码的应用程序名称时:

<a ... data-appname="{{ current_app }}" 
       data-modelname="{{ model_name }}">...</a>
。。。

正如一个明显的注意事项,使用此类代码时要小心,并确保这些视图在允许的参数、对请求的足够用户权限以及可以删除的模型实例方面是安全的。

当我使用pk=i.id时,有没有办法在按钮代码中获取应用程序名和模块名??我想如果有这样的方法,那么问题就可以解决了。我在这里有点困惑。两个模板中是否使用相同的按钮?是。。确切地说,实际上模板是相同的,两者都是共享的@AmalSurendranThen按钮中的应用程序名称保持不变,对吗?我想这个值应该是雇主的,这样代码才能工作。是的。该值为employer,它可以与url:employer/job/edit一起正常工作,但在vendor.job/edit处不起作用@阿马尔苏伦德兰
<a ... data-appname="{{ current_app }}" 
       data-modelname="{{ model_name }}">...</a>