【问题标题】:Customizing Django Admin to call stored procedures自定义 Django Admin 以调用存储过程
【发布时间】:2015-04-11 04:48:11
【问题描述】:

我正在开发一个用于上传和处理一些文件的应用程序。 我得到了只使用管理界面的建议。

应用程序将调用一些存储过程从 ftp 服务器获取文件。检索文件的存储过程工作正常。

我可以从 DJANGO 调用存储过程,创建一个带有游标的模型来执行过程并从视图传递参数。

型号:

class PRCEDURE_FTP():
      def ftpload(self,pv_fecha):
          cursor = connection.cursor()
          query = "begin django_sp.procedure_test(:foo); end; "
          param = {"foo":pv_fecha}
          sp =  cursor.execute(query,param)
          cursor.close()
          return sp

我从使用此视图呈现的模板传递参数:

def TestView(request):
    form = TestForm(request.POST or None)
    if request.method == 'POST':
        if form.is_valid():
          carga = PROCEDURE_FTP()
          sp = carga.ftpload(request.POST['fecha'])
          return HttpResponseRedirect('/')
    return render(request,'test.html',{'form':form})

工作正常,没有任何问题

但我不知道如何从管理界面执行此操作。 我想知道这是否可以从管理界面以及如何添加自定义模板或如何调用模型来执行存储过程

提前致谢

【问题讨论】:

    标签: django django-models django-admin django-views


    【解决方案1】:

    Django ModelAdmin 允许您在其中 define custom view。因此,将您的视图代码移动到 ModelAdmin 并覆盖 get_urls() 方法:

    class MyModelAdmin(admin.ModelAdmin):
    
        def get_urls(self):
            urls = super(MyModelAdmin, self).get_urls()
            my_urls = patterns('',
                (r'^test_view/$', self.admin_site.admin_view(self.test_view))
            )
            return my_urls + urls
    
        def test_view(self, request):
            form = TestForm(request.POST or None)
            ...
    

    要在 test.html 模板中使用管理布局,请从 admin/base_site.html 扩展它:

    {% extends "admin/base_site.html" %}
    
    {% block title %}My test upload{% endblock %}
    
    {% block content %}
    
        <form action="" method="post">
            {% csrf_token %}
            {{ form.as_p }}
            <input type="submit" value="Upload" />
        </form>
    
    {% endblock %}
    

    【讨论】:

    • 谢谢@catavaran。我只有一个问题。创建自定义表单与视图的概念相同
    • 我不明白你的问题。 test_view() 是常规视图,您可以使用与非管理员视图相同的表单。
    • 对不起,我在想别的事情。我现在的问题是当我尝试从自定义模板执行该过程时出现错误:405 METHOD NOT ALLOWED。
    • 我创建了另一个thread。我测试了视图和表单,并且在管理员之外可以正常工作。但是当我尝试从管理员运行时,我得到错误方法不允许。
    • 在另一个线程中,错误是Template not found 而不是Method not allowed。您仍然收到错误 405?
    猜你喜欢
    • 2018-06-25
    • 1970-01-01
    • 2018-01-15
    • 1970-01-01
    • 2015-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多