之前在添加资料时,都是手动去资料库添加,这样很不合理,也没有效率
如果只是为了方便,当然可以使用以下的方法
def create(request): for i in range(5): student = Student() student.name = '王'+str(i) student.age = i student.save() return HttpResponse('create_suc')
但今天资料在excel里面,该怎么办呢
在有外键的情况下,不能直接给值,还是要透过外键物件
一班来说openpyxl应改可以用相对路径,但不知道为什么在django下只能用绝对路径
def create(request): import openpyxl wb = openpyxl.load_workbook('D:/create.xlsx') wb.active = 0 ws = wb.active num = 1 for row in ws: if num == 1: num += 1 continue name = ws['A' + str(num)].value age = ws['B' + str(num)].value classroom = ws['C' + str(num)].value student = Student() student.name = name student.age = age student.classroom = ClassRoom.objects.filter(name=classroom).first() student.save() num += 1 return HttpResponse('create_suc')
如果有注册页面,也可以尝试用selenium(后端一定要会selenium吧)
这边就不再放注册该怎么做了,只看selenium程式码
chromedriver上网查符合自己版本的,下载放到同一层
import timefrom selenium import webdriverfrom selenium.webdriver.chrome.options import Optionsimport openpyxloptions = Options()options.add_argument("--disable-notifications")# 启动 chrome driverdriver = webdriver.Chrome('chromedriver', options=options)# 指定开启网址driver.get("http://127.0.0.1:8000/app/register/")wb = openpyxl.load_workbook('D:/create.xlsx')wb.active = 0ws = wb.activenum = 1for row in ws: if num == 1: num += 1 continue name = ws['A' + str(num)].value age = ws['B' + str(num)].value classroom = ws['C' + str(num)].value driver.find_element_by_name('name').send_keys(name) driver.find_element_by_name('age').send_keys(age) driver.find_element_by_name('classroom').send_keys(classroom) driver.find_element_by_tag_name("button").click() time.sleep(2)
我的注册完成后有自动导向到原本页面,所以可以一直跑