博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django学习记录
阅读量:4687 次
发布时间:2019-06-09

本文共 3237 字,大约阅读时间需要 10 分钟。

django学习

==========================================================

1、上传文件:

(1)、 

http://www.cnblogs.com/ccorz/p/Django-model-zhong-shu-ju-pi-liang-dao-rubulkcreat.html

http://www.cnblogs.com/CQ-LQJ/p/5089047.html

(2)、上传excel文件存入数据库时,可以不用存入硬盘,而直接读取内存中的数据流。

xlrd api中:xlrd.open_workbook(filename=None,file_contents=None),如果设置了file_contents,filename便不起作用。

如下:

class Upload(object):    u'''文件上传类,接受excel,csv文件'''        def __init__(self,filename=None,file_contents=None):        self.filename = filename        self.file_contents = file_contents            def get_data(self):        '''返回数据'''        try:            import xlrd            #filename读取文件名。file_contents=读取内存中的文件流            wb = xlrd.open_workbook(filename=self.filename,file_contents=self.file_contents)            ws = wb.sheets()[0]            data = [ws.row_values(i) for i in range(ws.nrows)][2:]            return data        except:            return "xlrd is not exists!" #使用   data = Upload(file_contents=req.FILES['subfile'].read())   print data.get_data()

(3)、对上传的excel文件进行校验。

def validate_excel(value):    """自定义验证内容"""    if value.name.split('.')[-1] not in ['xls','xlsx']:        raise ValidationError(gettext('文件类型错误: %(value)s'),params={
'value': value},)class UpSub(models.Model): subfile = models.FileField(u"文件名称",help_text=u"只能上传excel文件",validators=[validate_excel]) #这里使用自定义的验证 class Meta: verbose_name = u'批量上传变电站' verbose_name_plural = u'批量上传变电站'

(4)、使用 get_or_create(),返回一个元组,第一个参数为get or create 的obj,第二个参数为 create的布尔值,新建数据为True,反之为False。

(5)、如何让admin页面中app按一定顺序显示。由于django的app是按名称顺序,但中文不同于英文名称。处理方法,在app的verbose_name前加入序号。如:

verbose_name = u'变电站'verbose_name_plural = u'1、变电站'verbose_name = u'2、线路'verbose_name_plural = u'2、线路'

其中,verbose_name 为change_list中的app名称,verbose_name_plural为app_list中显示的名称,效果如下:

 2、改变admin中app显示的名称

(1),打开该app文件夹的__init__.py 文件,输入:

default_app_config = 'train.apps.TrainConfig'

(2),打开该apps.py文件,输入:(verbose_name即为你要显示的名字,前面加序号可以排序)

#coding:utf-8from django.apps import AppConfigclass TrainConfig(AppConfig):name = "train"verbose_name = u"培训"

(3)效果:

 

 

 

 

 

===========================================手动输入的分割线==================================================

2、单独使用django的orm

  (1)mytest.py

# -*- coding: utf-8 -*-from django.db import modelsfrom django.conf import settingsimport django#外部调用django时,需要设置django相关环境变量#设置INSTALLED_APPS信息INSTALLED_APPS = [    'mytest',]#设置数据库信息DATABASES = {    'default': {        'ENGINE': 'django.db.backends.sqlite3',   #mysql的engine        'NAME': 'plant',                        #数据库名称    }}#给Django配置相关信息settings.configure(DATABASES=DATABASES, INSTALLED_APPS=INSTALLED_APPS)#启动Djangodjango.setup()#构造ORM的对象class Animal_json(models.Model):    name = models.CharField(db_column=u'name', max_length=512, primary_key=True)    data_json = models.TextField(db_column=u'data_json')    def __unicode__(self):        return self.name

  (2)在数据中定义field。

  (3)test.py

#coding:utf-8from mytest import Animal_jsonan = Animal_json(name=u"测试1",data_json=u"这是测试1")an.save()an = Animal_json(name=u"测试2",data_json=u"这是测试2")an.save()animals = Animal_json.objects.all()for i in animals:    print i.name," --> ",i.data_json

  (4)、运行测试

 

转载于:https://www.cnblogs.com/daivlin/p/7443410.html

你可能感兴趣的文章
2808 sci 接收中断
查看>>
原创:机器学习排序深入解读
查看>>
HDU 4288
查看>>
程序的跳转(一行代码)
查看>>
hello world ,详解
查看>>
Update
查看>>
DataGridView ScrollBar End Event
查看>>
C#委托的一次"甜蜜"接触
查看>>
前端开发值得推荐的各种资源
查看>>
MYSQL5.7版本sql_mode=only_full_group_by问题
查看>>
使用JavaScript为一张图片设置备选路径
查看>>
httpclient4.5.2 Post请求支持http和https
查看>>
HDU之旅
查看>>
Sql2005:provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接
查看>>
SQL Server主键自动生成_表and存储过程
查看>>
selenium无法正常运行 Chrome浏览器,cannot find Chrome binary的问题
查看>>
一体机分区误删找到数据的方案
查看>>
excel常用函数
查看>>
网络协议-restful协议
查看>>
JavaScript模块化编程(一)
查看>>