在我问我的问题之前,我需要提供一些背景信息:
我编写了一个简单的python脚本,该脚本读取linux的syslog文件并搜索某些字符串。我有类似的其他类似脚本(用于执行文件系统内容的脚本,与其他服务器交互的脚本等等)。这些脚本大多数都将简单的写入内容写入stdout。
我想将这些脚本移植到Web服务器,这样我就可以将浏览器简单地安装到https://server/syslog上,并获得与在命令行界面上运行脚本所获得的输出相同的输出。
根据我的研究,Django似乎是一个不错的选择。我遵循了一些Django教程,并且能够开发一些基本的django网络应用程序。
我的问题是:由于django没有“控制器”,我应该在哪里放置脚本代码?我认为最好的选择是,但是根据djangos文档,它没有任何意义。
从django doc中提取:在我们对MVC的解释中,“视图”描述了呈现给用户的数据。不一定是数据的外观,而是要显示的数据。该视图描述的是您看到的数据,而不是如何查看。这是一个微妙的区别。
答案 0 :(得分:1)
对MVC的描述不是那么重要。 django的典型用法是用于数据库支持的Web应用程序。这描述了一种设计模式或范例。完全有可能以其他方式使用django。
如果要构建一个django应用程序,该应用程序是现有脚本的Web界面,则甚至可能根本不需要django ORM。无论如何,您可以根据需要在视图中放置尽可能多的逻辑。您的用例可能并不完全适合MVC或MVT范例。 Django视图只是python函数(或类,但是基于Django类的视图与ORM紧密结合)。
答案 1 :(得分:0)
我建议:
基本上保留了脚本的原样,但将要重用的部分包装为 功能。您可以使用
使其保持独立脚本的功能 if __name__=='__main__':
阻止调用函数。
将这些函数导入views.py-不管它们在哪里,只要您的服务器始终能够找到它们即可。我把我的放在了应用目录中。
在视图中调用该函数,然后将文本返回到从视图返回的HttpResponse对象。 (我认为这比创建模板和上下文并调用渲染更直接,但是我通常不这样做,所以可能会有一些问题吗?)
答案 2 :(得分:0)
这有点旧的代码-但是您将有足够的主意开始-检查https://github.com/alex2/django_logtail
(Django_LogTail)