全教育培训行业第三方平台平台就业机构
扫码试听
扫码试听
Q:2638333071
首页 > 行业问答 > > Django如何使用多数据库方法介绍(django admin 多对多)
行业动态 行业问答 课程问答 零基础学习 就业前景 技术干货

Django如何使用多数据库方法介绍(django admin 多对多)

发布时间:1 天 前 栏目:行业问答 浏览:

1、Django如何使用多数据库方法介绍


有些项目可能涉及到使用多个数据库的情况,方法很简单。接下来通过本文给大家介绍Django使用多数据库的方法,需要的朋友参考下吧

有些项目可能涉及到使用多个数据库的情况,方法很简单。

1.在settings中设定DATABASE

比如要使用两个数据库:

这样就确定了2个数据库,别名一个为default,一个为user。数据库的别名可以任意确定。

default的别名比较特殊,一个Model在路由中没有特别选择时,默认使用default数据库。

当然,default也可以设置为空:

这样,因为没有了默认的数据库,就需要为所有的Model,包括使用的第三方库中的Model做好数据库路由选择。

2.为需要做出数据库选择的Model规定app_label

3.写Database Routers

Database Router用来确定一个Model使用哪一个数据库,主要定义以下四个方法:

db_for_read(model, **hints)

规定model使用哪一个数据库读取。

db_for_write(model, **hints)

规定model使用哪一个数据库写入。

allow_relation(obj1, obj2, **hints)

确定obj1和obj2之间是否可以产生关联, 主要用于foreign key和 many to many操作。

allow_migrate(db, app_label, model_name=None, **hints)

确定migrate操作是否可以在别名为db的数据库上运行。

一个完整的例子:

数据库设定:

如果想要达到如下效果:

app_label为auth的Model读写都在auth_db中完成,其余的Model写入在primary中完成,读取随机在replica1和replica2中完成。

auth:

这样app_label为auth的Model读写都在auth_db中完成,允许有关联,migrate只在auth_db数据库中可以运行。

其余的:

这样读取在随机在replica1和replica2中完成,写入使用primary。

最后在settings中设定:

就可以了。

进行migrate操作时:

migrate操作默认对default数据库进行操作,要对其它数据库进行操作,可以使用--database选项,后面为数据库的别名。

与此相应的,dbshell,dumpdata,loaddata命令都有--database选项。

也可以手动的选择路由:

查询:

保存:

移动:

以上的代码会产生问题,当p在first数据库中第一次保存时,会默认生成一个主键,这样使用second数据库保存时,p已经有了主键,这个主键如果未被使用不会产生问题,但如果先前被使用了,就会覆盖原先的数据。

有两个解决方法;

1.保存前清除主键:

2.使用force_insert

删除:

从哪个数据库取得的对象,从哪删除

如果想把一个对象从legacy_users数据库转移到new_users数据库:

2、windows7系统如何安装django(图文教程)

Django是一个开放源代码的Web应用框架,由Python写成。在windows732位系统中如何安装django呢?网上搜索关于对于Django的安装步骤内容比较少,小编总结经验得出windows7系统安装django的方法,有需要的不妨一起来学习。

具体方法如下:

1、因为Django本身是由Python编写,所以先要安装Python;

2、安装Python,点开python-3.3.4.msi然后直接Next到安装完毕;

注意,为了下一步在dos下使用python命令,这里要配置一下环境变量。右击计算机-属性-高级-环境变量-修改系统变量path,添加Python安装地址,笔者这里是C:\\Python33;

3、Django下载后为压缩包,解压缩跟Python放在同一个根目录,在dos下进入到Django-1.6.2(读者可能版本不同)目录,执行pythonsetup.pyinstall,然后开始安装,Django将要被安装到Python的Lib下site-packages;

4、然后是配置环境变量,将这几个目录添加到系统环境变量中:

C:/Python33/Lib/site-packages/django;C:/Python33/Scripts。

添加完成后就可以使用Django的django-admin.py命令新建工程了;

5、检查是否安装成功,可以在dos下进入Django-1.6.2目录查看Django版本。

1.输入python

2.输入importdjango

3.输入django.get_version()

windows7系统安装django的方法分享到这里了。

3、Django REST framework框架之GET POST PUT PATCH DELETE等API请求接口设计

一、API接口功能需求:设计一些接口URL,让前端/客户请求这个URL去获取数据并显示,更改数据(增删改查),达到前后端分离的效果

二、设计逻辑:通过http协议请求方式GET、POST、PUT、PATCH、DELETE设计符合RESTful规范的api接口也就是URL

三、简易源码:

3.序列化serializers

#导入模型类和rest_framework序列化模块serializers

#定义序列化类,使用继承ModelSerializer方法

model = Article #指定序列化的模型类

4.视图函数views

#调用csrf装饰器csrf_exempt模块,解决跨域访问问题

#JSONRenderer它将Python的dict转换为JSON返回给客户端

#JSONParser 负责将请求接收的JSON数据转换为dict

#写法一

#在需要跨域的视图上调用装饰器@csrf_exempt

arts = Article.objects.all() #获取模型类数据

ser = ArticleSerializer(instance=arts,many=True) #序列化数据instance

#下一步用rest_framework方法里的JSONRenderer方法渲染数据

#写法二

#根据id进行增删改操作接口

备注:

*写法二中定义JSONResponse类将返回的数据data与content_type返回类型做了封装

*API接口

*Postman测试效果图

4、django如何区分不同的request?

在 Django 中,可以通过请求的不同属性来区分不同的请求。以下是一些常用的方法:

1. 请求方法(Request Method):每个 HTTP 请求都包含一个请求方法,例如 GET、POST、PUT、DELETE 等。您可以使用`request.method`属性来获取当前请求的方法,并根据方法进行逻辑判断。

示例:

# 处理 GET 请求

# 处理 POST 请求

# 处理其他请求方法

2. URL 路径和参数:请求的 URL 包含路径和可能的查询参数。您可以使用 Django 路由系统来将不同的 URL 映射到不同的视图函数或类视图中,并从 URL 中提取参数进行处理。

示例:

# 处理列表页请求

# 处理详情页请求,id 是从 URL 中提取的参数

3. 请求头部信息:HTTP 请求还包含各种头部信息,例如 Content-Type、User-Agent 等。您可以使用`request.META`字典来访问请求的头部信息,并根据需要进行处理。

示例:

# 处理移动设备请求

# 处理其他请求

4. 请求参数和表单数据:对于 POST 请求,可以通过`request.POST`属性来访问请求的表单数据。对于 GET 请求,可以使用`request.GET`属性来访问 URL 查询参数。

示例:

# 处理 POST 请求中的表单数据

# 处理 GET 请求中的查询参数

通过结合上述的方法,您可以根据不同的请求特征来区分和处理不同的请求,并编写相应的逻辑代码。

5、Django中一个项目里怎么使用两个数据库




在django项目中, 一个工程中存在多个APP应用很常见. 有时候希望不同的APP连接不同的数据库,这个时候需要建立多个数据库连接。


1. 修改项目的 settings 配置


在settings.py中配置需要连接的多个数据库连接串




2. 设置数据库的路由规则方法


在settings.py中配置DATABASE_ROUTERS


1DATABASE_ROUTERS=[‘Prject.database_router.DatabaseAppsRouter‘]


Project: 建立的django项目名称(project_name)


database_router: 定义路由规则database_router.py文件名称, 这个文件名可以自己定义


DatabaseAppsRouter: 路由规则的类名称,这个类是在database_router.py文件中定义


3. 设置APP对应的数据库路由表


每个APP要连接哪个数据库,需要在做匹配设置,在settings.py文件中做如下配置:




以上的report,regs是项目中的 APP名,分别指定到 ora1, default的数据库。


为了使django自己的表也创建到你自己定义的数据库中,你可以指定 : admin, auth, contenttypes, sessions 到设定的数据库中,如果不指定则会自动创建到默认(default)的数据库中.


4. 创建数据库路由规则


在项目工程根路径下(与 settings.py 文件一级)创建database_router.py文件:



5.原生sql的使用:




6. Models创建样例


在各自的 APP 中创建数据表的models时,必须要指定表的 app_label 名字,如果不指定则会创建到default中配置的数据库名下,


如下:


在app01下创建models




在app02下创建models




7. 生成数据表


在使用django的 migrate 创建生成表的时候,需要加上 _database 参数,如果不加则将 未 指定 app_label 的 APP的models中的表创建到default指定的数据库中,如:


将app01下models中的表创建到db01的数据库”db_01”中


./ manage.py migrate--database=db01


将app02下models中的表创建到db02的数据库”db_02”中


./ manage.py migrate--database=db02


将app03下models中的表创建到default的数据库”sqlite3”中


./ manage.py migrate


以上创建完成后,其它所有的创建、查询、删除等操作就和普通一样操作就可以了,无需再使用类似


models.User.objects.using(dbname).all()


这样的方式来操作


Django中一个项目里怎么使用两个数据库

标签:DBNamerate数据库连接image生成report查询、删除ESS名称


上一篇:没有了
技术干货
零基础学习
行业多年深耕,从这报名,学费立减800
  • 岳同学180****1241刚刚成功领取
  • 胡同学134****6431刚刚成功领取
  • 李同学150****6122刚刚成功领取
  • 张同学136****2231刚刚成功领取
  • 孙同学178****5521刚刚成功领取
  • 齐同学156****7788刚刚成功领取
猜你喜欢
查看更多
相关推荐
查看更多
现在学习,我的薪资能达到多少?
立即报名

联系我们:

Q:2638333071

鄂ICP备2023015464号