Python 只使用Django的某些部分?

Python 只使用Django的某些部分?,python,django,Python,Django,我喜欢Django,但对于一个特定的应用程序,我只想使用它的一部分,但我对Django在内部的工作方式还不够熟悉,所以也许有人可以为我指出正确的方向,告诉我应该检查什么 具体而言,我想使用: 模型与数据库抽象 另外,虽然我希望通过缓存而不是HTML生成来避免数据库查找,而且由于Django中的缓存框架是为后者设计的,但我还不确定这是否真的合适 我不会使用: 模板 urlconfigs 或者,更确切地说,我既不使用HTTP也不使用HTML。因此,基本上,我的输入/输出链与平常不同 这行吗

我喜欢Django,但对于一个特定的应用程序,我只想使用它的一部分,但我对Django在内部的工作方式还不够熟悉,所以也许有人可以为我指出正确的方向,告诉我应该检查什么

具体而言,我想使用:

  • 模型与数据库抽象
  • 另外,虽然我希望通过缓存而不是HTML生成来避免数据库查找,而且由于Django中的缓存框架是为后者设计的,但我还不确定这是否真的合适
我不会使用:

  • 模板
  • urlconfigs
或者,更确切地说,我既不使用HTTP也不使用HTML。因此,基本上,我的输入/输出链与平常不同

这行吗


Django中我个人的杀手级功能是我可以使用模型进行的对象/数据库映射,因此如果有另一种技术(不一定是Python,我处于设计阶段,对语言和平台非常不可知)可以提供相同的功能,那就太好了,当然也有其他项目专门实现django的单个部分。例如,一个由几个项目组成的集合,这些项目可以独立工作,并共同构成一个完整的web开发框架

因为我想到了db抽象

关于缓存部分:我不知道有任何独立项目实现了通用缓存功能

另一方面,实现自己的缓存应该相当容易,例如使用。看看创意和谷歌的“备忘录”


还要记住,您的数据库有自己的缓存机制,因此您甚至不必关心细节。

我倾向于使用混合匹配方法来使用Python进行web编程。:-)

我对Django没有太多的经验,但我建议大家看看数据库的东西。它与其他人配合得很好,并为您提供了几个潜在的抽象层(因此,您可以使用一些基本的东西,或者如果您愿意,可以对其进行调整)。另外,如果您曾经使用过hibernate/nhibernate,那么您对它已经有些熟悉了

我最喜欢的部分是,它有很多数据库可连接的选项(最明显的是SQL Server,上次我检查时django没有内置它)


话虽如此,我被告知使用Django可以很容易地将功能解耦(但我自己从未这样做过)。

我自己使用Django进行对象/db映射,而不使用它的urlconfigs。只需创建一个名为
djangosettings.py
的文件,并插入必要的配置,例如:

DATABASE_ENGINE   = 'oracle'
DATABASE_HOST     = 'localhost'
DATABASE_NAME     = 'ORCL'
DATABASE_USER     = 'scott' 
DATABASE_PASSWORD = 'tiger'
然后在常规Python代码中,执行以下操作

import os
os.environ["DJANGO_SETTINGS_MODULE"] = "djangosettings"
在导入任何Django模块之前。这将允许您使用Django的object/db映射,而无需实际拥有Django项目,因此您可以将其用于独立脚本或其他web应用程序或任何您想要的东西

至于缓存,如果您不想使用Django,那么您可能应该决定使用什么,并从那里开始。我建议使用CherryPy,它不使用Django风格的正则表达式URL映射,而是根据函数名自动将URL映射到函数。CherryPy主页顶部有一个示例:


CherryPy有自己的缓存系统,因此您可以完成与Django完全相同的事情,但无需使用Django的urlconfig系统。

Django作为一个web框架,在创建网站方面非常高效。然而,它也同样适用于解决网络以外的问题。这是项目引以为傲的松散耦合。没有什么能阻止您安装完整版本的Django,并使用您所需要的。通常,Django的组件很少对它们的用法做出广泛的假设

具体而言:

  • Django模特什么都不知道 关于HTML或HTTP
  • 模板对HTML或HTTP一无所知
  • 缓存 该系统可用于

在没有web服务器的情况下使用Django时,您将面临的主要问题之一是正确设置环境。ORM和缓存系统仍然需要在settings.py中配置。您可能会发现有一些文档很有用。

我创建了一个模板Django项目,允许您这样做


只需按照说明操作,就可以编写利用Django数据库功能的独立python文件,而无需使用urlconf、视图等。我已经分享了一个解决方案示例,它可以防止代码内部的python路径操纵:

它包含一个独立的数据访问包、一个单独的简单Django站点和一个单元测试。

我发现了它,但在2009年得到了回答,我没有在Django 1.8中运行它。对于最近的Django 1.8,你可以看看这个,其中一些部分来自KeyboardInterrupt的回答

文件夹结构为:

.
├── myApp
│   ├── __init__.py
│   └── models.py
└── my_manage.py
myApp是一个模块,包含一个空的
\uuuu init\uuuu.py
models.py

models.py
中有一个示例模型类: 从django.db导入模型

class MyModel(models.Model):
     field = models.CharField(max_length=255)
my_manage.py包含django数据库、已安装的_应用程序设置并充当django Official manage.py,因此您可以:

python my_manage.py sql myApp
python my_manage.py migrate
......
my_manage.py
中的代码是: 从django.conf导入设置

db_conf = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'your_database_name',
        'USER': 'your_user_name',
        'PASSWORD': 'your_password',
        'HOST': 'your_mysql_server_host',
        'PORT': 'your_mysql_server_port',
    }
}

settings.configure(
    DATABASES = db_conf,
    INSTALLED_APPS     = ( "myApp", )
)

# Calling django.setup() is required for “standalone” Django u usage
# https://docs.djangoproject.com/en/1.8/topics/settings/#calling-django-setup-is-required-for-standalone-django-usage
import django
django.setup()

if __name__ == '__main__':
    import sys
    from django.core.management import execute_from_command_line

    execute_from_command_line(sys.argv)

为了使用Django的模型和数据库抽象我在这里解释了在Django之外使用它们的干净方法:


Django 2.0.2版

对文章中的缓存位进行了扩展。谢谢另请参阅在没有设置文件的情况下工作。这绝对是一个有用的链接,尽管我仍然喜欢将我的设置分开,因为我倾向于使用一堆设置,因此我发现将它们全部放在一个单独的文件中更干净。感谢链接!正是我所说的