用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 只需要一种选项,原文:

