Django模型

冷不防 2023-07-01 08:50 128阅读 0赞

Django 模型

Django 对各种数据库提供了很好的支持,包括:PostgreSQL、MySQL、SQLite、Oracle。
Django 为这些数据库提供了统一的调用API。 我们可以根据自己业务需求选择不同的数据库。
MySQL 是 Web 应用中最常用的数据库。

如果你没安装 mysql 驱动,可以执行以下命令安装:

  1. pip install mysqlclient
  2. conda install mysqlclient

连接MySQL驱动

  • mysqlclient

    • python 2 , 3都能直接使用
    • 致命缺点:对mysql安装有要求,必须指定位置存在配置文件
  • python-mysql

    • python2支持很好
    • python3不支持
  • pymysql

    • python2,python3都支持
    • 它还可以伪装成前面的库。
伪装

在django项目中的__init__.py中添加

  1. import pymysql
  2. pymysql.install_as_MySQLdb()
  3. 或者
  4. from pymysql import install_as_MySQLdb
  5. install_as_MySQLdb()

作用是让Django的ORM能以mysqldb的方式来调用PyMySQL。


数据库配置

我们在项目的 settings.py 文件中找到 DATABASES 配置项,将其信息修改为:

  1. DATABASES = {
  2. 'default': {
  3. 'ENGINE': 'django.db.backends.mysql', # 或者使用 mysql.connector.django
  4. 'NAME': 'django', # 数据库名
  5. 'USER': 'root', # 账号
  6. 'PASSWORD': 'root', # 密码
  7. 'HOST':'127.0.0.1', # ip
  8. 'PORT':'3306', # 端口号
  9. }
  10. }

这里添加了中文注释,所以你需要在 HelloWorld/settings.py 文件头部添加 #-*- coding: UTF-8 -*-
上面包含数据库名称和用户的信息,它们与 MySQL 中对应数据库和用户的设置相同。Django 根据这一设置,与 MySQL 中相应的数据库和用户连接起来。

SQLite

  • 轻量级的嵌入式级的数据库
  • 特点是小

    • 常用场景
    • Android、ios、
  • 数据库常规操作90%类似于MySQL

定义模型

创建 APP

Django规定,如果要使用模型,必须要创建一个app。我们使用以下命令创建一个 App的 app:

  1. django-admin startapp App

目录结构如下:

  1. HelloDjango
  2. |-- App
  3. | |-- __init__.py
  4. | |-- admin.py
  5. | |-- models.py
  6. | |-- tests.py
  7. | |-- views.py

接下来在settings.py中找到INSTALLED_APPS这一项,进行注册,如下:

  1. INSTALLED_APPS = (
  2. 'django.contrib.admin',
  3. 'django.contrib.auth',
  4. 'django.contrib.contenttypes',
  5. 'django.contrib.sessions',
  6. 'django.contrib.messages',
  7. 'django.contrib.staticfiles',
  8. 'App', # 添加此项
  9. )

template(模板)配置

App下创建templates文件夹,并编写hello.html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>首页</title>
  6. </head>
  7. <body>
  8. <ul>
  9. <li>今天</li>
  10. <li>天气</li>
  11. <li>很好</li>
  12. <li>适合</li>
  13. <li>睡觉</li>
  14. </ul>
  15. </body>
  16. </html>

模板配置方式

两种:

  • app中进行模板配置

    • 只需在app的根目录下创建templates文件夹即可。
    • 如果想要代码提示,我们应该将文件夹标记为template folder
  • 项目目录中进行模板配置

    • 需要在项目目录中创建templates文件夹并标记
    • 需要在settings中进行注册

在开发中使用第二种,模板可以继承、复用。

用例

项目的根目录下创建templates,并添加home.html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>首页</title>
  6. </head>
  7. <body>
  8. 今天天气晴朗,是个学习的好日子。
  9. </body>
  10. </html>

在settings.py中的TEMPLATES中添加

  1. TEMPLATES = [
  2. {
  3. 'BACKEND': 'django.template.backends.django.DjangoTemplates',
  4. 'DIRS': [
  5. os.path.join(BASE_DIR,'templates'), # 添加目录,BASE_DIR是项目的绝对路径
  6. ],
  7. 'APP_DIRS': True,
  8. 'OPTIONS': {
  9. 'context_processors': [
  10. 'django.template.context_processors.debug',
  11. 'django.template.context_processors.request',
  12. 'django.contrib.auth.context_processors.auth',
  13. 'django.contrib.messages.context_processors.messages',
  14. ],
  15. },
  16. },
  17. ]

App中的views.py中添加

  1. def home(request):
  2. return render(request,'home.html')

项目目录下的urls.py中添加

  1. from django.conf.urls import url
  2. from App import views
  3. urlpatterns = [
  4. url(r'^home/', views.home),
  5. ]

启动项目,并访问http://127.0.0.1/home/

在这里插入图片描述


View编写(Controller)

App下的views.py编写如下:

  1. def hello(request):
  2. return HttpResponse('双击666')
  3. def index(request):
  4. return render(request,'hello.html')

路由配置

找到项目目录下的urls.py,配置如下:

  1. from django.conf.urls import url
  2. from django.contrib import admin
  3. from App import views # templates下的views.py
  4. urlpatterns = [
  5. url(r'^admin/', admin.site.urls),
  6. url(r'^hello/', views.hello), # 添加url
  7. ]

启动项目

  1. python manage.py runserver

访问网页http://127.0.0.1/hello/

在这里插入图片描述

路由优化配置
  • 项目如果逻辑比较复杂可以进行拆分,拆分为多个app。
  • 继续拆分路由器urls

    • 在app中创建自己的urls

      • urlpatterns 路由规则列表
      • 在根urls中进行子路由的包含
    • 子路由的使用

      • 根路由的规则 + 子路由的规则

推荐使用子路由

步骤:
(1)在创建的App中创建urls.py,然后添加以下内容:

  1. from App import views
  2. urlpatterns = [
  3. url(r'^index/',views.index)
  4. ]

(2)在主目录下的urls.py添加一下内容:

  1. urlpatterns = [
  2. url(r'^admin/', admin.site.urls),
  3. url(r'App/',include('App.urls'))
  4. ]

启动项目,并访问地址:http://127.0.0.1:8000/App/index/
在这里插入图片描述

整个数据交互流程图

在这里插入图片描述


发表评论

表情:
评论列表 (有 0 条评论,128人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Django模型

    Django 模型 Django 对各种数据库提供了很好的支持,包括:PostgreSQL、MySQL、SQLite、Oracle。 Django 为这些数据库提供了

    相关 Django模型

    Django模型 Django对各种数据库提供了很好的支持。包括MySQL,SQLite,Orcale等。 Django为这些数据库提供了统一的调用api。可以根据不同

    相关 Django 模型

    Django 模型是与数据库相关的,与数据库相关的代码一般写在 models.py 中,Django 支持 sqlite3, MySQL, PostgreSQL等数据库,只需要