使用Django和SQLite

使用Django访问SQLite数据库的步骤。

简要概述

以下是有关在创建Django应用时使用数据库(DB)的配置方法的说明。
在这里,我们将使用SQLite。
SQLite不适合大型应用程序,因此如果您的应用程序需要同时处理多个访问,请从一开始就考虑使用其他数据库。

我們將使用 Windows 作業系統。我們將使用 VisualStudioCode(以下稱為 VSCode)進行操作。按照下面的步驟進行創建。

    1. 模型类的定义

 

    1. 创建迁移文件

 

    1. 执行迁移

 

    1. 显示Django管理网站

 

    1. 创建管理账号

 

    1. 将模型注册到管理工具

 

    1. 向模型添加条目

 

    添加计数值

假设事前已经进行了以下设置。

 

模型类的定义

在这里我们要创建一个计数器。
当按下按钮时,计数会增加,所以需要记住计数的数量。我们将使用数据库来管理计数的数量。

在models.py中创建一个类,并对成员变量定义计数器数量。

from django.db import models

# Create your models here.
class Counter(models.Model):
    number = models.IntegerField()

创建迁移文件 mí

创建迁移文件。命令如下。将”app01″部分替换为所输入的命令名称。
python .\manage.py makemigrations app01

(venv) PS C:\ws\sample> python .\manage.py makemigrations app01
Migrations for 'app01':
  app01\migrations\0001_initial.py
    - Create model Counter

执行迁移

执行迁移操作。命令如下:
python .\manage.py migrate

(venv) PS C:\ws\sample> python .\manage.py migrate
Operations to perform:
  Apply all migrations: admin, app01, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying app01.0001_initial... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying auth.0012_alter_user_first_name_max_length... OK
  Applying sessions.0001_initial... OK

Django管理站点的显示

Django提供了一个用于管理数据的Django管理网站。
如果查看project/urls.py文件,会发现从一开始就定义了”admin/”。

urlpatterns = [
    path('admin/', admin.site.urls),

当您启动Django服务器并在浏览器中打开以下URL时,将显示Django管理网站。
http://127.0.0.1:8000/admin

image.png

创建管理账户

为了使用Django管理网站,您需要一个管理帐户。您需要创建一个用于登录该网站的用户名和密码。

由于这是通过命令执行的操作,因此需要在VScode的终端中输入以下命令:
python .\manage.py createsuperuser

密码已设置为app01admin。由于这只是一个示例,所以密码很简单,但在实际生产中会使用更复杂的密码。
另外,提一下,在运营时为了抵御攻击,会将admin这个URL改为其他名称或者禁用。

(venv) PS C:\ws\sample> python .\manage.py createsuperuser
ユーザー名 (leave blank to use 'main'): admin
メールアドレス: 
Password: 
Password (again):
Superuser created successfully.

将模型注册到管理工具中。

注册管理模型。如果不这样做,Django管理站点将无法显示所创建的模型。

登录到Django管理网站后,将显示以下画面:
在注册之前,显示了认证和授权/组,用户。

image.png

请在app01/admin.py中添加以下内容。

from django.contrib import admin
+ from .models import Counter

# Register your models here.
+ admin.site.register(Counter)

在注册后,APP01 / Counters 的显示会增加。

image.png

在模型中添加记录

在Django管理网站上,点击“Counters”并添加记录。

image.png

点击“新增计数器”。

image.png

在输入框中输入数字0,然后点击保存按钮。

image.png

有一张唱片被添加了。

image.png

增加计数值

我們將在模板上顯示計數值。

{% extends 'app01/base.html' %}
{% block content %}
  <div class="bg-primary text-white">
    {{text}}
  </div>
+  <div>
+    {{number}}
+  </div>
{% endblock content %}

在views.py中编写代码将计数值传递给模板。

from django.shortcuts import render
+ from .models import Counter

# Create your views here.

def index(request):
+    record = Counter.objects.get()
    message = {
        'title':'app01',
        'text':'Hello',
+        'number':f'{record.number}',
    }
    return render(request, 'app01/index.html', message)

当运行Djyango服务器并显示app01时,计数值将会显示出来。

image.png

增加按钮

添加计数按钮和清除按钮,以完成它。

{% extends 'app01/base.html' %}
{% block content %}
  <div class="bg-primary text-white">
    {{text}}
  </div>
  <div>
    {{number}}
+
+    <form action="{{countup_url}}" method="get">
+      <div class="button1">
+          <button name="BTN1" type="submit" class="btn btn-primary">カウントアップ</button>
+      </div>
+    </form>
+    <form action="{{clear_url}}" method="get">
+      <div class="button2">
+          <button name="BTN2" type="submit" class="btn btn-secondary">クリア</button>
+      </div>
+    </form>
  </div>

  {% endblock content %}
from django.shortcuts import render
from .models import Counter

+MY_URL = 'http://127.0.0.1:8000/'

# Create your views here.
def index(request):
    record = Counter.objects.get()
    message = {
        'title':'app01',
        'text':'Hello',
        'number':f'{record.number}',
+        'countup_url':MY_URL + 'countup',
+        'clear_url':MY_URL + 'clear',
    }
    return render(request, 'app01/index.html', message)

+def countup(request):
+    record = Counter.objects.get()
+    record.number += 1
+    record.save()
+    return index(request)
+
+def clear(request):
+    record = Counter.objects.get()
+    record.number = 0
+    record.save()
+    return index(request)
urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('app01.urls')),
+    path('/countup/', include('app01.urls')),
+    path('/clear/', include('app01.urls')),
]
from django.urls import path
from . import views

urlpatterns = [
    path('', views.index),
+    path('countup', views.countup),
+    path('clear', views.clear),
]
image.png

按下”カウントアップ”按钮会递增,按下”クリア”按钮会归零。

广告
将在 10 秒后关闭
bannerAds