干巴爹兔的博客 干巴爹兔的博客
首页
  • 前端文章

    • JavaScript
    • HTML
    • Vue
  • 学习笔记

    • JavaScript教程
    • React学习笔记
    • Electron学习笔记
  • 开源项目

    • cloud-app-admin
    • 下班了吗Vscode插件
    • Subversion变更单插件
  • Server

    • Django
  • 学习笔记

    • MySQL学习笔记
  • 运维

    • 服务器部署
    • Linux
  • 日常学习

    • 学习方法
关于
收藏
友链
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

干巴爹兔

卑微的前端打工人
首页
  • 前端文章

    • JavaScript
    • HTML
    • Vue
  • 学习笔记

    • JavaScript教程
    • React学习笔记
    • Electron学习笔记
  • 开源项目

    • cloud-app-admin
    • 下班了吗Vscode插件
    • Subversion变更单插件
  • Server

    • Django
  • 学习笔记

    • MySQL学习笔记
  • 运维

    • 服务器部署
    • Linux
  • 日常学习

    • 学习方法
关于
收藏
友链
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Django

    • Django框架初体验(一)
    • Django框架初体验(二)
      • 数据库配置
      • 创建模型
      • 激活模型
      • 介绍 Django 管理页面
        • 创建一个管理员账号
      • 启动开发服务器
      • 向管理页面中加入投票应用
    • Django框架初体验(三)
    • Django框架初体验(四)
    • 给django添加jwt授权
  • 学习笔记

  • 后端
  • Django
干巴爹兔
2020-05-12
目录

Django框架初体验(二)

# 数据库配置

Djongo使用 SQLite 作为默认数据库,如果你想使用其他数据库,你需要安装合适的 database bindings (opens new window) ,然后改变设置文件中 DATABASES (opens new window) 'default' 项目中的一些键值:

  • ENGINE (opens new window) -- 可选值有 'django.db.backends.sqlite3','django.db.backends.postgresql','django.db.backends.mysql',或 'django.db.backends.oracle'。其它 可用后端 (opens new window)。
  • NAME (opens new window) - 数据库的名称。如果使用的是 SQLite,数据库将是你电脑上的一个文件,在这种情况下, NAME (opens new window) 应该是此文件的绝对路径,包括文件名。默认值 os.path.join(BASE_DIR, 'db.sqlite3') 将会把数据库文件储存在项目的根目录。

默认开启的某些应用需要至少一个数据表,所以,在使用他们之前需要在数据库中创建一些表。请执行以下命令:

py manage.py migrate
1

# 创建模型

在 Django 里写一个数据库驱动的 Web 应用的第一步是定义模型 - 也就是数据库结构设计和附加的其它元数据。

from django.db import models


class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')


class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)
1
2
3
4
5
6
7
8
9
10
11
12

每个字段都是 Field (opens new window) 类的实例 - 比如,字符字段被表示为 CharField (opens new window) ,日期时间字段被表示为 DateTimeField (opens new window) 。这将告诉 Django 每个字段要处理的数据类型。

# 激活模型

上面的一小段用于创建模型的代码给了 Django 很多信息,通过这些信息,Django 可以:

  • 为这个应用创建数据库 schema(生成 CREATE TABLE 语句)。
  • 创建可以与 Question 和 Choice 对象进行交互的 Python 数据库 API。

但是首先得把 polls 应用安装到我们的项目里。

为了在我们的工程中包含这个应用,我们需要在配置类 INSTALLED_APPS (opens new window) 中添加设置。因为 PollsConfig 类写在文件 polls/apps.py 中,所以它的点式路径是 'polls.apps.PollsConfig'。在文件 mysite/settings.py 中 INSTALLED_APPS (opens new window) 子项添加点式路径后,它看起来像这样:

INSTALLED_APPS = [
    'polls.apps.PollsConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]
1
2
3
4
5
6
7
8
9

现在你的 Django 项目会包含 polls 应用。接着运行下面的命令:

py manage.py makemigrations polls
1

通过运行 makemigrations 命令,Django 会检测你对模型文件的修改(在这种情况下,你已经取得了新的),并且把修改的部分储存为一次 迁移。

Django 有一个自动执行数据库迁移并同步管理你的数据库结构的命令 - 这个命令是 migrate (opens new window),我们马上就会接触它 - 但是首先,让我们看看迁移命令会执行哪些 SQL 语句。sqlmigrate (opens new window) 命令接收一个迁移的名称,然后返回对应的 SQL:

py manage.py sqlmigrate polls 0001
1

现在,再次运行 migrate (opens new window) 命令,在数据库里创建新定义的模型的数据表

from django.db import models

class Question(models.Model):
    # ...
    def __str__(self):
        return self.question_text

class Choice(models.Model):
    # ...
    def __str__(self):
        return self.choice_text
1
2
3
4
5
6
7
8
9
10
11

给模型增加 __str__() (opens new window) 方法是很重要的,这不仅仅能给你在命令行里使用带来方便,Django 自动生成的 admin 里也使用这个方法来表示对象。

# 介绍 Django 管理页面

为你的员工或客户生成一个用户添加,修改和删除内容的后台是一项缺乏创造性和乏味的工作。因此,Django 全自动地根据模型创建后台界面。

# 创建一个管理员账号

py manage.py createsuperuser
1

键入你想要使用的用户名,然后按下回车键:

Username: admin
1

然后提示你输入想要使用的邮件地址:

Email address: admin@example.com
1

最后一步是输入密码。你会被要求输入两次密码,第二次的目的是为了确认第一次输入的确实是你想要的密码。

Password: **********
Password (again): *********
Superuser created successfully.
1
2
3

# 启动开发服务器

Django 的管理界面默认就是启用的

py manage.py runserver
1

现在,打开浏览器,转到你本地域名的 "/admin/" 目录, -- 比如 "http://127.0.0.1:8000/admin/" 。你应该会看见管理员登录界面:

# 向管理页面中加入投票应用

打开polls/admin.py

from django.contrib import admin

from .models import Question

admin.site.register(Question)
1
2
3
4
5

注意事项:

  • 这个表单是从问题 Question 模型中自动生成的
  • 不同的字段类型(日期时间字段 DateTimeField (opens new window) 、字符字段 CharField (opens new window))会生成对应的 HTML 输入控件。每个类型的字段都知道它们该如何在管理页面里显示自己。
  • 每个日期时间字段 DateTimeField (opens new window) 都有 JavaScript 写的快捷按钮。日期有转到今天(Today)的快捷按钮和一个弹出式日历界面。时间有设为现在(Now)的快捷按钮和一个列出常用时间的方便的弹出式列表。

页面的底部提供了几个选项:

  • 保存(Save) - 保存改变,然后返回对象列表。
  • 保存并继续编辑(Save and continue editing) - 保存改变,然后重新载入当前对象的修改界面。
  • 保存并新增(Save and add another) - 保存改变,然后添加一个新的空对象并载入修改界面。
  • 删除(Delete) - 显示一个确认删除页面。
编辑 (opens new window)
#Django
上次更新: 2022/08/26, 15:52:02
Django框架初体验(一)
Django框架初体验(三)

← Django框架初体验(一) Django框架初体验(三)→

最近更新
01
使用Vscode开发一个小插件
10-21
02
Vscode插件配置项监听
10-18
03
使用has属性构造必填效果
10-14
更多文章>
Theme by Vdoing | Copyright © 2020-2023 互联网ICP备案: 闽ICP备18027236号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式