Django的快速入门——3项目的模型

(1). 连接MySQL数据库设置

默认情况下,配置使用SQLite。若不使用SQLite作为数据库,则需要额外的设置,例如 USER,PASSWORD和HOST必须加入。

其中ENGINE设置为数据库后端使用。内置数据库后端有:

  • 'django.db.backends.postgresql'
  • 'django.db.backends.mysql'
  • 'django.db.backends.sqlite3'
  • 'django.db.backends.oracle'

在myweb/settings.py文件中,通过DATABASES项进行数据库设置

复制代码
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mydemo',
        'USER': 'root',
        'PASSWORD': '',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

注意:Django使用MySQL数据库需要加载 MySQLdb模块,需要安装 mysqlclient,若已经安装请略过。 (Django2.2版本之前我们安装的是pymysql模块,不过现在使用的mysqlclient )

复制代码
  $ pip install  mysqlclient
下载到本地安装:(解决安装中的错误)
  • 执行命令查看python版本与系统位数(32/64位) ``` C:\Users\Administrator>python Python 3.8.2 (tags/v3.8.2:7b3ab59, Feb 25 2020, 22:45:29) MSC v.1916 32 bit (Intel) on win32 Type "help", "copyright", "credits" or "license" for more information.

    >

Mysqlclient: a fork of the MySQL-python interface for the MySQL database. mysqlclient‑1.4.6‑pp373‑pypy36_pp73‑win32.whl mysqlclient‑1.4.6‑cp39‑cp39‑win_amd64.whl mysqlclient‑1.4.6‑cp39‑cp39‑win32.whl mysqlclient‑1.4.6‑cp38‑cp38‑win_amd64.whl ✔ mysqlclient‑1.4.6‑cp38‑cp38‑win32.whl

mysqlclient‑1.4.6‑cp37‑cp37m‑win_amd64.whl mysqlclient‑1.4.6‑cp37‑cp37m‑win32.whl mysqlclient‑1.4.6‑cp36‑cp36m‑win_amd64.whl mysqlclient‑1.4.6‑cp36‑cp36m‑win32.whl mysqlclient‑1.4.6‑cp35‑cp35m‑win_amd64.whl mysqlclient‑1.4.6‑cp35‑cp35m‑win32.whl mysqlclient‑1.4.6‑cp27‑cp27m‑win_amd64.whl mysqlclient‑1.4.6‑cp27‑cp27m‑win32.whl

复制代码
* 执行安装:

pip install mysqlclient‑1.4.6‑cp38‑cp38‑win32.whl


### (2). 创建模型

在我们的简单的应用程序中,去创建一个stu表信息操作的Model类。

编辑 myapp/models.py文件

```python
from django.db import models

# Create your models here.

class Stu(models.Model):
    '''自定义Stu表对应的Model类'''
    #定义属性:默认主键自增id字段可不写
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=16)
    age = models.SmallIntegerField()
    sex = models.CharField(max_length=1)
    classid=models.CharField(max_length=8)

    # 定义默认输出格式
    def __str__(self):
        return "%d:%s:%d:%s:%s"%(self.id,self.name,self.age,self.sex,self.classid)

    # 自定义对应的表名,默认表名:myapp_stu
    class Meta:
        db_table="stu"

(3). 激活模型

要将该应用程序包括在我们的项目中,我们需要在设置中添加对其配置类的引用INSTALLED_APPS。

该 myappConfig班是在myapp/apps.py文件中,所以它的虚线路径'myapp.apps.myappConfig'。

编辑myweb/settings.py文件,并将该虚线路径添加到该INSTALLED_APPS设置。

复制代码
INSTALLED_APPS  =  [ 
    'django.contrib.admin' ,
    'django.contrib.auth' ,
    'django.contrib.contenttypes' ,
    'django.contrib.sessions' ,
    'django.contrib.messages' ,
    'django.contrib.staticfiles' ,
    'myapp.apps.MyappConfig',  #或者直接写 myapp
]

(4). 使用(两种)

① 现在进入交互式的Python shell,并使用Django提供的免费API
复制代码
C:\Users\张涛\Desktop\code\myweb>python manage.py shell
Python 3.8.2 (tags/v3.8.2:7b3ab59, Feb 25 2020, 22:45:29) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from myapp.models import Stu

>>> mod = Stu.objects
# 获取所有信息
>>> lists = mod.all()
>>> for v in lists:
...     print(v)
...
1:zhangsan:22:m:python03
2:lisi:25:w:python04
3:wangwu:20:m:python03
4:zhaoliu:19:w:python04
5:qq01:20:m:python03
6:qq02:21:w:python04
7:qq03:20:m:python05
8:uu01:21:w:python04
9:uu02:20:m:python05
10:aa:29:w:python03
11:bb:20:m:python04

# 获取单条信息
>>> mod.get(id=1)
<Stu: 1:zhangsan:22:m:python03>
>>> mod.get(id=2)
<Stu: 2:lisi:25:w:python04>
>>> mod.get(id=3)
<Stu: 3:wangwu:20:m:python03>

>>>
② 在myapp应用的视图中使用
复制代码
# 文件:myapp/views.py 文件代码

from django.shortcuts import render
from django.http  import HttpResponse
from myapp.models import Stu
# Create your views here.

def index(request):
    return HttpResponse("Hello Django!")

def stu(request):
    #获取所有stu表信息
    lists = Stu.objects.all()
    print(lists)
    #获取单条学生信息
    print(Stu.objects.get(id=1))

    return HttpResponse("ok")
  • 配置stu函数的访问路由

    #在myapp/urls.py文件中配置

    path('stu/', views.stu),

启动服务后,在浏览器中访问,在命令行终端中查看输出效果: http://localhost:8000/myapp/stu

相关推荐
Ulyanov8 分钟前
Python实现6-DOF刚体仿真器(下)——环境扰动与控制闭环
开发语言·python·算法·系统仿真·雷达电子对抗·导引头
分布式存储与RustFS12 分钟前
RustFS Beta.10 性能解读:PUT 全面反超 MinIO,Rust 重写对象存储成了?
开发语言·后端·rust
Reart22 分钟前
Leetcode 309.买卖股票的最佳时期含冷冻期(你也想成为股票高手吗o〃ω〃o,718)
后端
小小的木头人27 分钟前
Python 批量解析 Excel 经纬度,调用高德地图 API 获取中文地址
开发语言·python·excel
Reart36 分钟前
Leetcode 188.买卖股票的最佳时机4(718)
后端·算法
金銀銅鐵44 分钟前
[Python] 为 Vole 机器语言实现图形化界面
python·程序员
Reart1 小时前
Leetcode 123.买卖股票的最佳时期3(内有随心谈,718)
后端·算法
只与明月听1 小时前
LangChain 学习-掌握LangChain Core API
前端·人工智能·后端
小林ixn1 小时前
Python基础全梳理:从注释到函数,这些细节你都掌握了吗?
python·编程语言
无相求码1 小时前
数组越界为什么有时候不崩溃?VS2013 下栈上变量的幽灵布局解密
c语言·后端