用Django将csv数据进行登记

我参考了下一页。
尝试在Django中创建一个应用程序。
使用Python脚本将数据注册到Django中。

我会为已经可以使用MariaDB的项目添加功能。

请看这里以了解如何创建项目
使用Django编写 Hello World。

如何从sqlite3切换到MariaDB,请参考以下方法
在Django中使用MariaDB。

项目名称是proj01

假设已经在 MariaDB 中创建了具有以下参数的数据库:
用户名: django
密码: tiger123
数据库: django_apart
同时,也已经完成了 proj01/settings.py 文件的修改。

MariaDB(无)> 创建数据库django_apart;
MariaDB(无)> 授予django@localhost对django_apart的全部权限;

1) 制作一个应用程序。

python manage.py startapp apartment

2) 编辑 proj01/settings

省略
INSTALLED_APPS = [
    'apartment',
    'home',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]
省略

3) 对 apartment/models.py 进行编辑。

from django.db import models

class Heya(models.Model):
    bango = models.CharField(max_length=20)
    tanako = models.CharField(max_length=50)
    hirosa = models.CharField(max_length=20)
    yachin = models.IntegerField()
    def __unicode__(self):
        return self.bango

4) 将数据反映到数据库中。

python manage.py makemigrations
python manage.py migrate

5)创建CSV文件

mkdir static
mkdir static/apartment
芥川龍之介,101,2DK,35000
江戸川 乱歩,102,2DK,35000
岡本 綺堂,103,1DK,30000
小川 未明,201,2DK,36000
梶井 基次郎,202,2DK,36000
菊池 寛,203,1DK,31000
国木田 独歩,301,2DK,40000
佐藤春夫,302,2DK,40000
太宰 治,303,1DK,37000

6) 创作脚本

mkdir apartment/management
mkdir apartment/management/commands
# ------------------------------------------------------------------
#
#   what_time_is_it.py
#
#                   Dec/18/2018
# ------------------------------------------------------------------
from django.core.management.base import BaseCommand
from django.utils import timezone
import sys 

class Command(BaseCommand):
    help = 'Displays current time'

    def handle(self, *args, **kwargs):
        sys.stderr.write("*** start ***\n")
        time = timezone.localtime(timezone.now()).strftime('%X')
        self.stdout.write("It's now %s" % time)
        sys.stderr.write("*** end ***\n")
#
# ------------------------------------------------------------------
# ------------------------------------------------------------------
#
#   list_rooms.py
#
#                   Dec/18/2018
#
# ------------------------------------------------------------------
from django.core.management.base import BaseCommand
from apartment.models import Heya
import sys

class Command(BaseCommand):
    help = 'Displays current time'

    def handle(self, *args, **kwargs):
        sys.stderr.write("*** start ***\n")
#
        for h in Heya.objects.all():
            print(h.tanako,"\t", end="")
            print(h.bango,"\t", end="")
            print(h.hirosa,"\t", end="")
            print(h.yachin)
#
        sys.stderr.write("*** end ***\n")
# ------------------------------------------------------------------
# ------------------------------------------------------------------
#
#   register_rooms.py
#
#                   Dec/18/2018
#
# ------------------------------------------------------------------
from django.core.management.base import BaseCommand
from apartment.models import Heya
import csv
import sys

file_csv = "static/apartment/authors.csv"

class Command(BaseCommand):
    help = 'Displays current time'

    def handle(self, *args, **kwargs):
#
        sys.stderr.write("*** start ***\n")
        fp = open(file_csv, 'r')
        reader = csv.reader(fp)
        for rr in reader:
            print(rr)
            hh = Heya()
            hh.tanako = rr[0]
            hh.bango = rr[1]
            hh.hirosa = rr[2]
            hh.yachin = rr[3]
            hh.save()
#
        sys.stderr.write("*** end ***\n")
        fp.close()
# ------------------------------------------------------------------

7) 确保脚本可用。

$ python manage.py help

Type 'manage.py help <subcommand>' for help on a specific subcommand.

Available subcommands:

[apartment]
    list_rooms
    register_rooms
    what_time_is_it
(省略)

8) 执行脚本

我会试着展示当前的时间。

$ python manage.py what_time_is_it
*** start ***
It's now 09:10:59
*** end ***

确认数据的状态

$ python manage.py list_rooms
*** start ***
*** end ***

输入数据

$ python manage.py register_rooms
*** start ***
['芥川龍之介', '101', '2DK', '35000']
['江戸川 乱歩', '102', '2DK', '35000']
['岡本 綺堂', '103', '1DK', '30000']
['小川 未明', '201', '2DK', '36000']
['梶井 基次郎', '202', '2DK', '36000']
['菊池 寛', '203', '1DK', '31000']
['国木田 独歩', '301', '2DK', '40000']
['佐藤春夫', '302', '2DK', '40000']
['太宰 治', '303', '1DK', '37000']
*** end ***

确认数据的状态

$ python manage.py list_rooms
*** start ***
芥川龍之介     101     2DK     35000
江戸川 乱歩    102     2DK     35000
岡本 綺堂   103     1DK     30000
小川 未明   201     2DK     36000
梶井 基次郎    202     2DK     36000
菊池 寛  203     1DK     31000
国木田 独歩    301     2DK     40000
佐藤春夫    302     2DK     40000
太宰 治  303     1DK     37000
*** end ***

9) 要查看数据,请遵守管理规则。

创建超级用户

python manage.py createsuperuser

9-2) 编辑 apartment/admin.py。

from django.contrib import admin

from apartment.models import Heya

admin.site.register(Heya)

启动开发服务器。

python manage.py runserver

9-4) 访问管理界面。

http://127.0.0.1:8000/admin 只需要一种选项,原文:

heyas01.png
heyas02.png
广告
将在 10 秒后关闭
bannerAds