django初学

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 【7月更文挑战第3天】1. 安装Django: `pip install Django`2. 创建项目: `django-admin startproject HelloWorld`3. 启动项目: `python manage.py runserver 0.0.0.0:8000`4. 生成应用: `django-admin startapp TestModel`5. 配置多数据库(MySQL):

1、安装django库
pip install Django
2、自动生成项目
django-admin startproject HelloWorld
3、启动项目
python manage.py runserver 0.0.0.0:8000
4、生成模块
django-admin startapp TestModel
5、配置连接多个MySQL数据库
image.png

DATABASES = {
   
   
    'default': {
   
   
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    },
    'zwfw': {
   
   
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'zwfw', # 数据库名称
        'HOST': '192.168.1.6', # 数据库地址,本机 ip 地址 127.0.0.1
        'PORT': 3306, # 端口
        'USER': 'root_DB',  # 数据库用户名
        'PASSWORD': 'password', # 数据库密码
    },
    'linyi': {
   
   
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'linyi', # 数据库名称
        'HOST': '192.168.1.6', # 数据库地址,本机 ip 地址 127.0.0.1
        'PORT': 3306, # 端口
        'USER': 'root_DB',  # 数据库用户名
        'PASSWORD': 'password', # 数据库密码
    },
}

修改mysql对应配置路由


# 配置数据库操作路由
DATABASE_ROUTERS = ['pyetl1.database_router.DatabaseAppsRouter']

DATABASE_APPS_MAPPING = {
   
   
    'wuliu': 'zwfw',
    'ying': 'lin',
    'sdi': 'sd_lii',
}

生成指定MySQL模型models文件
python manage.py inspectdb --database=linyi > yingxiao/models.py
image.png

简单的MySQL操作
from django.http import HttpResponse

from wuliu.models import RegionManage

数据库操作

def testdb(request):
test1 = RegionManage(row_id=1)
test1.save()
return HttpResponse("

数据添加成功!

")

查询全部数据

def getdataall(request):

# 初始化
response = ""
response1 = ""

listTest = RegionManage.objects.all()

# filter相当于SQL中的WHERE,可设置条件过滤结果
# response2 = RegionManage.objects.filter(id=1)

# 获取单个对象
# response3 = RegionManage.objects.get(id=1)

# 限制返回的数据 相当于 SQL 中的 OFFSET 0 LIMIT 2;
# RegionManage.objects.order_by('name')[0:2]

# 数据排序
# RegionManage.objects.order_by("id")

# 上面的方法可以连锁使用
# RegionManage.objects.filter(name="runoob").order_by("id")

# 输出所有数据
for var in listTest:
    response1 += var.operateusername
response = response1
return HttpResponse("<p>" + response + "</p>")

更新数据

def updatedatabyid(request):

# 修改其中一个id=1的name字段,再save,相当于SQL中的UPDATE
test1 = RegionManage.objects.get(row_id=1)
test1.operateusername = '测试组织机构'
test1.save()

# 另外一种方式
# Test.objects.filter(id=1).update(name='Google')

# 修改所有的列
# Test.objects.all().update(name='Google')

return HttpResponse("<p>修改成功</p>")

删除数据

def deldata(request):

# 删除id=1的数据
test1 = RegionManage.objects.get(row_id=1)
test1.delete()

# 另外一种方式
# Test.objects.filter(id=1).delete()

# 删除所有数据
# Test.objects.all().delete()

return HttpResponse("<p>删除成功</p>")

以下是学习过程中遇到的问题
1、启动的时候报错
You have 18 unapplied migration(s). Your project may not work properly until you apply
将服务关闭后执行以下代码,然后启动就正常了
python manage.py migrate
2、MySQL版本问题
Traceback (most recent call last):
File "manage.py", line 22, in
main()
File "manage.py", line 18, in main
execute_from_command_line(sys.argv)
File "D:\software\anaconda\envs\data\lib\site-packages\django\core\management__init.py", line 442, in execute_from_command_line
utility.execute()
File "D:\software\anaconda\envs\data\lib\site-packages\django\core\management\
init__.py", line 436, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "D:\software\anaconda\envs\data\lib\site-packages\django\core\management\base.py", line 412, in run_from_argv
self.execute(args, **cmd_options)
File "D:\software\anaconda\envs\data\lib\site-packages\django\core\management\base.py", line 458, in execute
output = self.handle(
args, options)
File "D:\software\anaconda\envs\data\lib\site-packages\django\core\management\commands\inspectdb.py", line 46, in handle
for line in self.handle_inspection(options):
File "D:\software\anaconda\envs\data\lib\site-packages\django\core\management\commands\inspectdb.py", line 62, in handle_inspection
with connection.cursor() as cursor:
File "D:\software\anaconda\envs\data\lib\site-packages\django\utils\asyncio.py", line 26, in inner
return func(*args,
kwargs)
File "D:\software\anaconda\envs\data\lib\site-packages\django\db\backends\base\base.py", line 330, in cursor
return self._cursor()
File "D:\software\anaconda\envs\data\lib\site-packages\django\db\backends\base\base.py", line 306, in _cursor
self.ensure_connection()
File "D:\software\anaconda\envs\data\lib\site-packages\django\utils\asyncio.py", line 26, in inner
return func(args, **kwargs)
File "D:\software\anaconda\envs\data\lib\site-packages\django\db\backends\base\base.py", line 289, in ensure_connection
self.connect()
File "D:\software\anaconda\envs\data\lib\site-packages\django\utils\asyncio.py", line 26, in inner
return func(
args, **kwargs)
File "D:\software\anaconda\envs\data\lib\site-packages\django\db\backends\base\base.py", line 272, in connect
self.init_connection_state()
File "D:\software\anaconda\envs\data\lib\site-packages\django\db\backends\mysql\base.py", line 257, in init_connection_state
super().init_connection_state()
File "D:\software\anaconda\envs\data\lib\site-packages\django\db\backends\base\base.py", line 239, in init_connection_state
self.check_database_version_supported()
File "D:\software\anaconda\envs\data\lib\site-packages\django\db\backends\base\base.py", line 214, in check_database_version_supported
raise NotSupportedError(
django.db.utils.NotSupportedError: MySQL 8 or later is required (found 5.7.43).

找到下面文件,找到对应行,注释掉以后就正常了。

\Lib\site-packages\django\db\backends\base\base.py

搜索下面方法

注释掉代码

check_database_version_supported()
image.png

3、生成models运行查询代码报错,id缺少key配置。
yingxiao.TAjxzsCxlatzs: (models.E004) 'id' can only be used as a field name if the field also sets 'primary_key=True'.
找到对应yingxiao.TAjxzsCxlatzs:类,在id后添加 primary_key=True

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
5月前
|
SQL 数据库 数据库管理
深入Django(七)
Django的数据库迁移系统是管理数据库模式变化的关键组件,自动化创建、修改和删除表及字段。它提供版本控制,便于团队协作。通过`makemigrations`生成迁移文件,`migrate`应用到数据库。迁移支持依赖关系和数据迁移功能,允许填充初始数据或执行数据转换。这个系统简化了数据库管理,促进了开发中的数据一致性。
42 5
|
5月前
|
数据库 数据安全/隐私保护 Python
深入Django(六)
本文档介绍了Django的表单系统,用于处理用户输入和数据验证。首先,表单通过声明式方式定义,如在`forms.py`中基于模型创建表单类。接着,在视图中处理GET和POST请求,使用`is_valid()`和`save()`方法验证和保存数据。在模板中,使用标签渲染表单和错误信息。表单系统还包括内置及自定义验证规则,以及与模型的集成,如`ModelForm`方便数据保存。此外,还有表单集、表单继承和自定义字段等高级功能。表单系统简化了用户输入管理和数据安全。
41 4
|
5月前
|
前端开发 Python
深入Django(四)
**Django模板系统**简介:用于结合数据与HTML,生成网页内容。模板系统让动态数据能插入静态页面,模板语言支持Python代码嵌入。创建模板涉及在应用目录下建立`templates`文件夹及编写HTML。使用时,视图通过`render`函数加载模板,URL配置指向相应视图。模板语言包含控制结构(如if、for)、过滤器(如日期格式化、字符串截取)和自定义过滤器。模板继承则促进布局一致性,允许子模板扩展基础模板。模板系统简化了Django中的动态内容渲染。
23 3
|
5月前
|
Python
深入Django(三)
本文详细介绍了Django视图(Views)。视图是Django中处理用户请求并返回响应的函数或类,负责应用程序逻辑。文章通过实例展示了如何创建简单视图、使用类视图以及如何与模板配合动态生成HTML内容。此外,还提到了视图处理表单、权限认证和错误处理的功能。总之,Django视图是应用的核心组件,用于处理业务逻辑和用户交互。
26 2
|
设计模式 缓存 前端开发
Django——小结
 Python的WEB框架有Django、Tornado、Flask 等多种,Django是重量级选手中最有代表性的一位,它的优势为:大而全,框架本身集成了ORM、模型绑定、模板引擎、缓存、Session等诸多功能。
126 0
Django——小结
|
Python
Django 项目重命名
  在日常学习工作过程中,我们难免需要复用以前的项目,这里讲下复用 Django 项目并重命名的过程。 1.修改项目名称,使用 pycharm -> refactor 重命名整个项目。   2.修改 manage.py 和 Django 下和项目名称相同的文件夹,使用 grep 指令找出和项目有关的字符串,如: grep 'test4' *.py 逐一修改。
4577 0
|
数据库 数据安全/隐私保护 Python
|
算法 前端开发 程序员
初识Django(一)
什么Django        Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的框架模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。
1596 0