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

相关推荐
一只小鱼儿吖20 分钟前
从代理ip的底层逻辑探讨下如何选择代理ip商。
网络·python·网络协议·tcp/ip
why技术25 分钟前
如果让我站在科技从业者的角度去回看 2025 年,让我选一个词出来形容它,我会选择“vibe coding”这个词。
前端·后端·程序员
喵个咪28 分钟前
Go单协程事件调度器:游戏后端的无锁有序与响应时间掌控
后端·游戏开发
Kiyra44 分钟前
八股篇(1):LocalThread、CAS和AQS
java·开发语言·spring boot·后端·中间件·性能优化·rocketmq
木风小助理1 小时前
在 Spring Boot 中实现 JSON 字段的蛇形命
spring boot·后端·json
山沐与山1 小时前
【设计模式】Python工厂模式与依赖注入:FastAPI的Depends到底在干嘛
python·设计模式·fastapi
写代码的【黑咖啡】1 小时前
Python常用数据处理库全解析
开发语言·python
William_cl1 小时前
【保姆级】ASP.NET Razor 视图引擎:@if/@foreach 核心语法拆解(附避坑指南 + 生活类比)
后端·asp.net·生活
2401_841495641 小时前
【Python高级编程】图着色动态可视化 APP
python·算法·matplotlib·tkinter·回溯法·图着色算法·动态可视化工具
pangtao20251 小时前
【瑞萨RA × Zephyr评测】看门狗
java·后端·spring