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. (有很多例子可以用来表达。)
面包
http://127.0.0.1:8000/ProductList/
演示例子
结束
我们会考虑在孙表中使用销售数据进行汇总和展示。