在Django之外使用模型和表单?

Rad*_*Hex 8 python django django-models

是否可以在Django环境之外使用Django Model和Form运行视图文件?

use*_*461 11

有可能的.Django相当擅长直接蟒蛇没有太多魔法,所以你通常可以解耦东西.视图只是函数,可以从任何其他python代码调用.

要使用ORM,您必须在脚本中设置django环境.查看"manage.py"文件显示了如何执行此操作:

from django.core.management import setup_environ
import settings
setup_environ(settings)
Run Code Online (Sandbox Code Playgroud)

现在,您可以调用您想要的任何视图:

from myapp.views import some_view

some_view(...)
Run Code Online (Sandbox Code Playgroud)

请记住,约定是视图函数将HttpRequest对象作为其第一个参数,并返回一个HttpResponse对象.您可以自己构建一个请求对象:

from django.http import HttpRequest

result = some_view(HttpRequest(), ...)
Run Code Online (Sandbox Code Playgroud)

但是如果你真的对使用HttpResponse或HttpRequest对象不感兴趣,也许你应该不要调用你的方法"视图".也许他们是"工具"或其他东西.这些都不是由Django强制执行的,但遵循这样的约定是很好的形式,所以其他程序员可以读取你的代码.

编辑: 2010-05-24:修复了"setup_environ"(之前错误地使用了"execute_manager"). 参考.

  • 这非常有用.谢谢.它确实应该包含在Django书或类似的东西中.我一直试图弄清楚如何利用模型API轻松地将一些数据加载到数据库中,这正是我所需要的.再次感谢. (2认同)