django连接oracle时setting 配置方法
下一步是将新创建的应用程序与项目相关联。为此,您需要编辑myproj文件夹中的settings.py文件,将字符串“myproj.myapp”追加到INSTALLED_APPS字节组中,如下所示:
INSTALLED_APPS=( ‘django.contrib.auth', ‘django.contrib.contenttypes', ‘django.contrib.sessions', ‘django.contrib.sites', ‘myproj.myapp' )
您已完成了应用程序主干的构建。然而,在可以查看应用程序是否正常工作之前,需要执行一些额外步骤。当然,这些步骤可能会有所不同,具体取决于您希望应用程序执行的操作。例如,如果您要构建不与数据库交互的简单应用程序,则不需要将数据库信息放在settings.py配置文件以及设计数据模型中。但在大多数情况下,您至少需要执行以下五个步骤:
在settings.py中指定数据库信息
创建模型
创建模板
创建视图
在urls.py中配置URL模式
在继续上述步骤之前,让我们看一下Django应用程序的高级视图,以便您可以更好地了解Django中的组件如何工作。下图示意性地显示了Django应用程序如何工作以满足用户请求。
根据此图中的图示,工作方式如下:
用户输入支持Django的站点的URL或在此站点的已加载页面上执行操作,从而将请求发送到托管此站点的Web服务器。
Django的URL调度程序遍历urls.py文件中的URL模式,并选择第一个与用户请求的URL匹配的模式,然后调用与所发现模式相关联的视图(Python回调函数)。
视图使用数据模型获得数据库数据,然后加载指定模板(已嵌入特殊模板标记的HTML页面;它类似于Java中的JavaServerPage),并向其传递上下文(包括映射到模板变量名称的已获得数据)。
最后,视图返回由已呈现模板填充的HttpResponse对象,如果出现错误,则返回HTTP异常。
您可以看到,Django基于将Web应用程序逻辑分为模型、视图和模板的概念,因此有效地将业务逻辑和展示分离开来。通常,这类似于当今许多其他Web框架中使用的模型-视图-控制器(MVC)范例。然而,在Django中,视图更像控制器,介于模型和模板之间。而Django模板更接近于MVC视图,因为这些模板负责使用从模型中获得的数据生成适当的用户界面。
现在您已掌握Django的概念,让我们继续在本部分开头启动的项目,构建一个与Oracle数据库交互的简单应用程序。
配置Django以便与Oracle数据库交互
您必须先告诉Django如何连接到数据库,才能利用Django的数据库相关特性。您可以通过在项目的settings.py配置文件中配置数据库相关设置来执行此操作。对于在上一部分开头创建的项目,您需要编辑django-admin.py生成的myproj目录中的settings.py。
在文本编辑器中打开settings.py文件,并根据您的数据库编辑与数据库相关的设置。例如,您可能按如下方式编辑它们:
DATABASE_ENGINE=‘oracle' DATABASE_NAME=‘XE' DATABASE_USER=‘hr' DATABASE_PASSWORD=‘hr' DATABASE_HOST=‘localhost' DATABASE_PORT=‘1521'
上述方式假设您在数据库中安装了HR演示模式并解除了锁定。然而,在实际项目中,您很可能会使用针对特定应用程序设计的自定义模式。需要注意的是,Django可以省去您自己创建基础表的麻烦。完成数据模型的构建之后,您可以运行manage.pysyncdb命令以自动创建数据库表—针对models.py文件中的每个数据模型创建一个数据库表。但为了简单起见,本文中的示例将使用HR演示模式中已经存在的表。
现在您已指示Django与特定Oracle数据库交互,可以继续构建数据模型。
与模型的对象关系映射
如前所述,Django支持与模型的对象关系映射,其中每个模型映射到单个数据库表,并表示子类为django.db.models.Model标准类的Python类。
以下示例说明如何针对现有表定义模型。在此示例中,您将使用HR的employees表,仅针对此表的选定字段定义模型字段。在myproj/myapp目录中打开models.py文件并进行编辑,添加employees类,如下所示:
fromdjango.dbimportmodels Createyourmodelshere. classemployees(models.Model): employee_id=models.IntegerField(primary_key=True) first_name=models.CharField(max_length=20,null=True) last_name=models.CharField(max_length=25) email=models.CharField(max_length=25) classMeta: db_table=“employees”
请注意,此处使用了一些模型字段选项。通过设置primary_key=True,可显式指定此字段是模型的主键。max_length是CharField这一字符串字段所需的参数。如果将可选的null参数设置为True,即表示告诉Django将空值作为NULL保存到数据库中。默认情况下,此参数设置为False。要查看字段选项和字段类型的完整列表,您可以参阅Django文档中的Model字段参考页面。
在上述示例中,另一个需要注意的事项是类Meta的使用,您可以通过此类为模型提供元数据选项。在此特定示例中,您使用db_table选项显式指定模型要映射到的表的名称。实际上,默认情况下,Django假设表的名称由模型类的名称和应用程序名称组成(通过下划线(_)符号分隔)。因此,在此特定示例中,Django将查找名为myapp_employees的表。当然,db_table并不是您可用于模型内部类Meta的唯一选项。您可以在Django文档的ModelMeta选项页面上查看可用的Meta选项列表。
此处讨论的示例很简单,因为它仅显示到单个数据库表的映射。但实际上,您通常必须处理一组通过外键约束相互关联的基础数据库表。为了解决此问题,Django提供了ForeignKey字段类型,可让您定义表示多对一关系的模型字段。
幸运的是,HR演示模式仅包含一组通过外键约束相互关联的表。例如,您可能选择departments表(其manager_id字段是employees表中employee_id的外键),并定义以下模型(将其添加到models.py文件中):
classdepartments(models.Model): department_id=models.IntegerField(primary_key=True) department_name=models.CharField(max_length=30) manager=models.ForeignKey(employees,null=True) classMeta: db_table=“departments”
看一下上述模型定义,您可能已经注意到,它针对外键模型字段使用名称manager,而不是实际在departments表中使用的manager_id。实际上,在模型中使用的manager字段引用相应的employees对象,而非此对象的employee_id字段。当外键字段名称要引用基础表中的相应列时,Django会隐式地将_id追加到此名称中。然而,在某些情况下,表中外键字段的名称结尾可能不包含_id。如果是这种情况,您可以使用外键模型字段的db_column参数显式指定表列名称。虽然在此特定示例中无需如此,但您可以使用以下语法在departments表中显式指定外键列的名称:
manager=models.ForeignKey(employees,db_column=‘manager_id',null=True)
除了上述通过ForeignKey定义的多对一关系之外,Django还支持一对一和多对多关系,您可以在模型中分别通过OneToOneField和ManyToManyField字段来定义。
以上这篇django连接oracle时setting配置方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。