django orm插入一条_如何通过django的ORM远程发布文章?
利用django的ORM可以方便的給數(shù)據(jù)庫(kù)插入文章
但是假如我django放在阿里云,那我想在本地寫(xiě)個(gè)插件,每天很方便的插入一些數(shù)據(jù),最好是通過(guò)ORM的,因?yàn)楣芾砥饋?lái)比較方便,會(huì)涉及到多個(gè)站,可能會(huì)有200多個(gè)站,而ORM接口就不要每次輸入密碼了,類似wrodpress的接口這種
如果用SQL插入,就感覺(jué)不太優(yōu)雅,而且比較麻煩,每次都要鏈接,數(shù)據(jù)庫(kù),因?yàn)檫@些站很可能會(huì)分到好幾個(gè)數(shù)據(jù)庫(kù)里
這里補(bǔ)充一下吧.其實(shí)需求很簡(jiǎn):
就是在本地的電腦上,控制遠(yuǎn)程的django,實(shí)現(xiàn)批量發(fā)布文章和管理文章的功能!
最好能用到django的ORM
如果沒(méi)辦法解決,那么如何讓本地的python腳本很方便的管理遠(yuǎn)程服務(wù)器的python的腳本,可以直接操作遠(yuǎn)程腳本進(jìn)行一些命令等
7月8日再補(bǔ)充一下說(shuō)明:
答案里面不少說(shuō)暴露api的方式,我研究了一下,好像不太可以~
理由:
我django的models是這樣設(shè)計(jì)的,里面有這些字段:
category = models.ForeignKey(Category, verbose_name=u'分類')
title = models.CharField(max_length=100, verbose_name=u'標(biāo)題')
img = models.CharField(max_length=200,
default='/static/img/article/default.jpg')
tags = models.CharField(max_length=200, null=True, blank=True,
verbose_name=u'標(biāo)簽', help_text=u'用逗號(hào)分隔')
summary = UEditorField('摘要', height=300, width=1000,
default=u'', blank=True, imagePath="uploads/images/",
toolbars='besttome', filePath='uploads/files/')
content = UEditorField('內(nèi)容', height=300, width=1000,
default=u'', blank=True, imagePath="uploads/images/",
toolbars='besttome', filePath='uploads/files/')
is_tuijian = models.BooleanField(default=False, verbose_name=u'推薦')
view_times = models.IntegerField(default=0)
zan_times = models.IntegerField(default=0)
is_top = models.BooleanField(default=False, verbose_name=u'置頂')
rank = models.IntegerField(default=0, verbose_name=u'排序')
status = models.IntegerField(default=0, choices=STATUS.items(),
verbose_name='狀態(tài)')
# pub_time = models.DateTimeField(default=False,verbose_name=u'發(fā)布時(shí)間')
pub_time = models.DateTimeField(auto_now_add = True,verbose_name=u'發(fā)布時(shí)間') #博客日期
create_time = models.DateTimeField(u'創(chuàng)建時(shí)間', auto_now_add=True)
update_time = models.DateTimeField(u'更新時(shí)間', auto_now=True)
大家大概體驗(yàn)一下就可以了~就是說(shuō)字段很多,而且基本都是非空字段,但是都有設(shè)置默認(rèn)值!
用暴露api的方式,其實(shí)和自己寫(xiě)sql語(yǔ)句的效果差不多~:
插入的數(shù)據(jù),每個(gè)字段都要寫(xiě),比如sql語(yǔ)句, 你就不能只是簡(jiǎn)單的寫(xiě)個(gè) title content category 這3個(gè)字段的值,而其他的django的ORM已經(jīng)定義好了!
我大概舉個(gè)例子大家就會(huì)明白!!!
比如如果用sql插入的話可能要構(gòu)建這樣一條語(yǔ)句:
INSERT INTO `zhangte`.`blog_article` (`id`,`title`,`img`,`summary`,`content`,`view_times`,`zan_times`,`is_top`,`rank`,`status`,`pub_time`,`create_time`,`update_time`,`category_id`,`tags`,`is_tuijian`,`is_tuijian`) VALUES ('{id}','{title}','{img}','{summary}','{content}','{view_times}','{zan_times}','{is_top}','{rank}','{status}','{pub_time}','{create_time}','{update_time}','{category_id}','{tags}','{is_tuijian}','{is_tuijian}');
暫且不說(shuō)字段多,看起來(lái)雜!
而且萬(wàn)一我程序修改一個(gè)字段,那這個(gè)代碼就不能用了!
那暴露api,其實(shí)也是一樣的,比如我要post數(shù)據(jù)~那post數(shù)據(jù),每個(gè)對(duì)應(yīng)的字段都要寫(xiě)!
等于其實(shí)跟sql差不多的,結(jié)果可能是data 要寫(xiě)成這樣:
data = {}
data["pk"] = pk
data["title"] = title
data["content"] = content
data["view_times"] = view_times
^^^^此處省略余下十幾個(gè)字段!!!
等于說(shuō)我每個(gè)字段都要定義,要不然會(huì)出現(xiàn)錯(cuò)誤(因?yàn)槎际欠强?)
那如果有人建議,把這些字段改下可以空的話不就可以~?如果真是這樣,那以后我怎么進(jìn)行數(shù)據(jù)篩選?!?!!??!?
其實(shí)我想要的是這個(gè)效果!!!
假如能用django的ORM,就很方便了
插入數(shù)據(jù)只要:
article = Article.objects.get_or_create(
pk = pk,
title = title,
content = content,
category = fenlei,
summary = summary,
)[0]
就插入一條數(shù)據(jù)了!
這樣的好處:
代碼簡(jiǎn)潔
我以后對(duì)程序進(jìn)行修改,比如增加字段等,就非常方便,理由大家應(yīng)該都懂的!
還有很多好處!我相信如果django的ORM可以解決的話,肯定比如暴露api或是直接用sql語(yǔ)句操作方便很多吧
總結(jié)
以上是生活随笔為你收集整理的django orm插入一条_如何通过django的ORM远程发布文章?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: KND(凯恩帝)机床的IP设置
- 下一篇: 类的概念、成员函数的定义方式、类的访问控