Django应用开发

目录

    • はじめに

 

    • 開発環境など

 

    • 開発

プロジェクト作成
DB作成
表示用URL作成
URLをクリックした際の処理を記述
一覧を表示するWebページの作成
完成

首先

我在尝试使用Django进行应用开发,为了整理知识,我写了这篇文章。

開发环境等

種類内容
OSWindows11
Python3.10.9
統合開発環境VScode
親プロジェクト作成フォルダD:¥Python¥Django
親プロジェクトフォルダsalesD:¥Python¥Django¥sales

父文件夹 = 包含Django各个项目的文件夹

进行开发

创建项目

启动PowerShell

cd D:¥Python¥Django
mkdir sales
cd sales
code .

开启了VSCode。

ターミナル起動
python -m venv venv
ターミナル再起動

ターミナルのプロンプトがvenvになっていることを確認(なっていなかったら、デフォルトのインタープリターとしてvenvのpythonを指定)

升级pip的版本

python -m pip install --upgrade pip

生成 requirements.txt

Django~=4.1.3

安装依赖关系

pip install -r requirements.txt

创建项目

django-admin startproject sales_pj .

应用程序开发

python manage.py startapp sales_app

应用程序注册

settings.py の INSTALLED_APPS の先頭に 'sales_app' を追加

创建数据库

DB结构
Django自动生成的三个表的主键(ID)未列出。

製品区分:ProductClass
    製品区分:product_class

商品仕様:Product
    製品id:product_class_id
    商品名:name
    単位:unit
    価格:price

売上:Sales
    商品仕様id:product_id
    日付:date
    売上数:soled_count

模型定义:models.py

    class ProductClass(models.Model):
        product_class = models.CharField(max_length=50, null=False)
        
    class Product(models.Model):
        product_class_id = models.ForeignKey(ProductClass, on_delete=models.CASCADE)
        name = models.CharField(max_length=50, null=False)
        unit = models.CharField(max_length=10, null=False)
        price = models.IntegerField()
    
    class Sales(models.Model):
        product_id = models.ForeignKey(Product, on_delete=models.CASCADE)
        date = models.DateField()
        soled_count = models.IntegerField()

生成模型定义文件

python manage.py makemigrations

生成模型数据库(使用默认的sqlite3创建)

python manage.py migrate

使用免费软件”A5:SQL Mk-2″稍微注册一下数据。

ProductClass に bread を登録
Product に メロンパン(単位:個、価格:150)、クリームパン(単位:個、価格:120)を登録
詳細は省略

用URL来创建

设置应用程序的URL:sales_pj的urls.py

from django.contrib import admin
from django.urls import path, include

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

创建并设置URL:在sales_app中的urls.py文件中
在sales_app中创建urls.py文件
(ProductClassListView和ProductListView的views.py文件稍后再创建)

from django.urls import path
from .views import ProductClassListView, ProductListView

urlpatterns = [
    path('ProductClassList/', ProductClassListView.as_view()),
    path('ProductList/', ProductListView.as_view()),
]

请描述点击URL时的处理。

视图.py

from django.views.generic import ListView
from .models import ProductClass, Product

# Create your views here.

class ProductClassListView(ListView):
    template_name = 'product_class_list.html'
    model = ProductClass

class ProductListView(ListView):
    template_name = 'product_list.html'
    model = Product

创建用于显示列表的模板(网页)。

模板的创建需要事先准备。

创建一个用于保存template的文件夹

D:\Django\Sales\sales_app\templates

将template保存用的文件夹信息注册到settings.py中。

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR, 'sales_app/templates'],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]
创建一个显示ProductClass列表的模板。

创建用于显示ProductClass列表的Web页面模板:product_class_list.html。同时显示外部约束关联的子信息(在声明FOREIGN KEY的表中的信息)。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    {% for element in object_list %}
    {{ element.product_class }}
    <table border="1">
      <tr>
        <th>内容</th>
        <th>単位</th>
        <th>価格</th>
      </tr>
      {% for item in element.product_set.all %}
        <tr>
          <td>{{ item.name }}</td>
          <td>{{ item.unit }}</td>
          <td>{{ item.price }}</td>
        </tr>
      {% endfor %}
    </table>
    {% endfor %}
</body>
</html>
创建一个显示产品列表的模板。

创建用于显示产品列表的网页模板:product_list.html
同时显示与外部约束相关联的父表信息(即外键所指向的表的信息)。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <table border="1">
      <tr>
        <th>品目</th>
        <th>内容</th>
        <th>単位</th>
        <th>価格</th>
      </tr>
      {% for product in object_list %}
        <tr>
          <td>{{ product.product_class_id.product_class }}</td>
          <td>{{ product.name }}</td>
          <td>{{ product.unit }}</td>
          <td>{{ product.price }}</td>
        </tr>
      {% endfor %}
      </table>
</body>
</html>

做完

确认操作

python manage.py runserver

请你马上把这封邮件发给我最快的一个复印店,然后请打印一份这份附件的复印件。

http://127.0.0.1:8000/ProductClassList/

There are many examples to express. (有很多例子可以用来表达。)

面包

内容単位価格メロンパン個150クリームパン個120
http://127.0.0.1:8000/ProductList/

演示例子

品目内容単位価格breadメロンパン個150breadクリームパン個120

结束

我们会考虑在孙表中使用销售数据进行汇总和展示。

广告
将在 10 秒后关闭
bannerAds