作者: bayestalk

  • 凡人和天才只有一念的距离

    天才和凡人的区别是什么?

    凡人和天才的只有一念的距离?

    无数次想过这个问题。在学生时代, 就偶尔听到学校的某个学生取得奥赛佳绩保送黄高, 就在想为什么是他而不是我,毕竟大家都是人类,而且自己似乎也还不笨。

    而在之后某天的某时某刻, 突然意会到李白诗歌的美,继而李白和凡人的差别。 不说《蜀道难》、《将进酒》这些神作,即使是《静夜思》这种“小诗”  – “床前明月光,疑是地上霜。举头望明月,低头思故乡“ ,也能写得这般涣然天成。

    那么李白和其他诗人的区别是什么?

    在之后的很多年里, 将尝试回答这个问题并记录下来。

    2022.11.27

    此时此刻我认为这两者的距离只有一念, 用佛家的概念来量化的话, 也就是0.018 秒。

    • 在第N个一念时, 天才心里的突触和灵感向终极答案前进了一步, 而凡人就此停住。
      • 停滞的原因是意志不够(主观), 突触网络的生机不足(客观)。
    • 如果把所有的, 最终的, 待解决的问题叫做”终极”, 把它想象成一个实体, 把解决办法叫做“道” 或者“涅槃”, 那么当你心里的神经网络完全覆盖住”终极”这个实体, 知晓所有的因果由来, 那么便是”得道”。
    • 那么接下来要思考的问题是:怎么让你大脑里里神经网络突触无限地往前延伸, 知道完全覆盖住问题?
      • 待续
    • 我突然有种隐秘的猜想, 墨家, 道家等应该是主张科学的, 主张“人要完善自己的神经网络”, 也就是今天所说的 “科学”; 而儒家本身有些偏向“人性”, 再加上被统治阶级利和改编成, 逐渐偏离了大道。 面对一个问题, 前者倾向于直接解决问题; 后者因为或不能, 或不想付出解决问题的成本等等, 他倾向于去解决设置这个问题的人, 或者找能解决这个问题的人去替他解决。(有点混乱, 老子自己直接解决, 孔子找老子替他解决, 这两者最终都解决了问题。 从结果上, 没区别?)

     

     

     

     

     

  • 从“不要回答”到“不要关注”

    1971年,清华大学的叶文洁,偷偷向太空发射了一道强烈的电波信号,8年后,收到神秘回复:“不要回答!不要回答!不要回答!”

    如果是普通人估计就作罢了,毕竟不明回复提示:不要回答!但是作为高级知识分子的叶文洁却欣喜若狂,反而又发送了一道更强烈的信号。

    由于自身及家庭亲人的悲惨遭遇, 以及随之而来的悲观心态, 继而对人类和地球文明失望, 导致她寄往于“三体”这个外星文明来解决她所认为的“地球问题”。

    而最终她引来的的不是“问题解决者”, 而是“外星侵略者”。

    以上情景可以有很多种解读方式, 但在现在这个年代, 网络连接人类, 媒体资本统治大众, 新冠肆掠全球的年代; 每个人都能自由发表观点而其中的大多数又很容易被资本阶级控制大脑的年代; 沸点无处不在无处不有的年代。作为一个普通人类, 你需要做的是“不要关注”, 你必须时刻提醒自己 “不要被污染”。

    有很多事情历史已经展示给我们看过, 比如房子:

    “中国自古以来都不是人人都能有属于自己的房子,大量的丫鬟、仆妇、管家、小厮寄养在权贵人家,身体都是不自由的,何谈拥有自己的房子。自古以来,最多的就是失去土地的农民,住在地主家做长工,又何谈属于自己的房子。”

    比如战争和侵略:地球这颗星球上, 稍微读点历史就会发现无一不是“崛起-发展-扩张/反侵略-修养/被奴役”。世界还是百年之前的世界, 只是中国已经不是那个中国。70年代之后的国人经历过的高速发展及和平时期, 并不是常态。

    所以无论发生多么光怪陆离的, 魔幻的, 荒诞的现实事物, 无需多想, 无需多言, 不要和人辩论, 不要被其吸引“过多的注意力”。

    接下来你需要思考的是:

    • 你的价值观是什么?你想成为什么样的人? 你想过什么样的生活? 你的目标是什么?
    • 哪些事情会让你在乱世和混乱的世界中成长?哪些事情会让你离你的目标更近?
    • 那么你就应该将你的注意力放在这些事情上面。

    假设你是一名书生, 目标是考上稷下学宫, 那么你就应该将你的绝大部分注意力投入到读书学习上。即使遇到挫折, 也不应该逃避和沉溺于网络游戏带来的欢愉上。

    “不要关注” ,“不要关注”, “不要关注” 那些与你目标无关的事情,  时刻觉察和调整你当下“注意力”的位置。

  • Python环境问题记录

    Django

    • 安装django
      • pip install django
    • 创建django项目
      • django-admin startproject projectname
    • 启动django项目
      • python manage.py startapp app_name
    • 注册app
      • INSTALLED_APPS = {
        'app01.apps.App01Config'
        }
    • 配置静态文件和模板路径
    • 配置数据库
      • 创建数据库
      • 安装数据库连接模块
        • pip install mysqlclient
      • 配置数据库连接
        • DATABASES = {
              'default': {
                  'ENGINE': 'django.db.backends.mysql',
                  'NAME': 'django_test_2',  # 数据库名字
                  'USER': 'root',
                  'PASSWORD': 'zxcvbnm',
                  'HOST': '127.0.0.1',  # 哪台机器安装了MySQL
                  'PORT': 3306,
              }
          }
      • 创建表
        • app-models.py 写类
        • python manage.py makemigrations
        • python manage.py migrate

     

    本地conda虚拟环境中部署Django项目

    利用conda创建虚拟环境

    conda create -n env_name python=version_number

    conda remove -n env_name (删除指定环境)

     

    激活新创建的环境

    conda init

    conda activate env_name

    (ENV_20221122) PS D:\Practice\Python\Django_20221122>

    当前已激活的环境名称会显示在最左侧的小括号内.

     

    在新创建的环境中安装所需包

    conda env list (查看已安装哪些包)

    conda安装

    conda install package_name

    (base) PS D:\Practice\Python\Django_20221122> conda env list
    # conda environments:
    #
    base * C:\ProgramData\Anaconda3
    DjangoProject C:\ProgramData\Anaconda3\envs\DjangoProject
    ENV_20221122 C:\ProgramData\Anaconda3\envs\ENV_20221122
    Python36 C:\ProgramData\Anaconda3\envs\Python36
    test C:\ProgramData\Anaconda3\envs\test
    

     

    pip安装

    尽管在anaconda下我们可以很方便的使用conda install来安装我们需要的依赖,但是anaconda本身只提供部分包,远没有pip提供的包多,有时conda无法安装我们需要的包,我们需要用pip将其装到conda环境里。

    首先,我们需要判断目前我们用的pip指令,会把包装到哪里,通常情况下,pip不像conda一样,他不知道环境,我们首先要确保我们用的是当前环境的pip,这样pip install时,包才会创建到本环境中,不然包会创建到base环境,供各个不同的其他conda环境共享,此时可能会产生版本冲突问题(不同环境中可能对同一个包的版本要求不同)

    用 which -a pip 命令查看我们此时用的pip为哪个环境.

    新创建的虚拟环境应该已经包含pip, 如没有, 可用conda install pip先安装

    退出当前环境

     

    本次使用完成后, 最好使用以下命令退出, 不要直接关闭cmd, 有概率会导致产生潜在问题.

    conda deactivate

    (在当前的conda虚拟环境里,只需要执行conda deactivate 命令即可,无须参数)

     

     

    linux 环境下部署Django项目

     

    当前环境的导出和导入(windows)

    pip

    记录和导出环境信息

    pip freeze > requirements_pip.txt

    生成requirements_pip.txt文件

    asgiref==3.5.2
    Django==4.1.3
    sqlparse==0.4.3
    tzdata==2022.6
    

     

    导入和安装环境配置

    pip install freeze > requirements_pip.txt

    conda

    conda list -e > requirements_conda.txt

  • 《庄子·杂篇·外物》

    原文

    外物不可必,故龙逄诛,比干戮,箕子狂,恶来死,桀、纣亡。人 主莫不欲其臣之忠,而忠未必信,故伍员流于江,苌弘死于蜀,藏其 血,三年而化为碧。人亲莫不欲其子之孝,而孝未必爱,故孝己忧而 曾参悲。木与木相摩则然,金与火相守则流,阴阳错行,则天地大骇 ,于是乎有雷有霆,水中有火,乃焚大槐。有甚忧两陷而无所逃。螴 蜳不得成,心若县于天地之间,慰暋沈屯,利害相摩,生火甚多,众 人焚和,月固不胜火,于是乎有僓然而道尽。

    庄周家贫,故往贷粟于监河侯。监河侯曰:“诺。我将得邑金,将 贷子三百金,可乎?”庄周忿然作色曰:“周昨来,有中道而呼者, 周顾视车辙,中有鲋鱼焉。周问之曰:‘鲋鱼来,子何为者耶?’对 曰:‘我,东海之波臣也。君岂有斗升之水而活我哉!’周曰:‘诺 ,我且南游吴越之王,激西江之水而迎子,可乎?’鲋鱼忿然作色曰 :‘吾失我常与,我无所处。我得斗升之水然活耳。君乃言此,曾不 如早索我于枯鱼之肆。’”

    任公子为大钩巨缁,五十犗以为饵,蹲乎会稽,投竿东海,旦旦而 钓,期年不得鱼。已而大鱼食之,牵巨钩,陷没而下骛,扬而奋鬐,白 波若山,海水震荡,声侔鬼神,惮赫千里。任公子得若鱼,离而腊之 ,自制河以东,苍梧已北,莫不厌若鱼者。已而后世辁才讽说之徒, 皆惊而相告也。夫揭竿累,趣灌渎,守鲵鲋,其于得大鱼难矣!饰小 说以干县令,其于大达亦远矣。是以未尝闻任氏之风俗,其不可与经 于世亦远矣!

    儒以《诗》、《礼》发冢,大儒胪传曰:“东方作矣,事之何若? ”小儒曰:“未解裙襦,口中有珠。”“《诗》固有之曰:‘青青之 麦,生于陵陂。生不布施,死何含珠为?’接其鬓,压其顪,儒以金椎控其颐,徐别其颊,无伤口中珠 。”

    老莱子之弟子出薪,遇仲尼,反以告,曰:“有人于彼,修上而趋 下,末偻而后耳,视若营四海,不知其谁氏之子。”老莱子曰:“是 丘也,召而来。”仲尼至。曰:“丘,去汝躬矜与汝容知,斯为君子 矣。”仲尼揖而退,蹙然改容而问曰:“业可得进乎?”老莱子曰: “夫不忍一世之伤,而骜万世之患。抑固窭邪?亡其略弗及邪?惠以 欢为,骜终身之丑,中民之行易进焉耳!相引以名,相结以隐。与其 誉尧而非桀,不如两忘而闭其所誉。反无非伤也,动无非邪也,圣人 踌躇以兴事,以每成功。奈何哉,其载焉终矜尔!”

    宋元君夜半而梦人被发窥阿门,曰:“予自宰路之渊,予为清江使 河伯之所,渔者余且得予。”元君觉,使人占之,曰:“此神龟也。 ”君曰:“渔者有余且乎?”左右曰:“有。”君曰:“令余且会朝 。”明日,余且朝。君曰:“渔何得?”对曰:“且之网得白龟焉, 箕圆五尺。”君曰:“献若之龟。”龟至,君再欲杀之,再欲活之。 心疑,卜之。曰:“杀龟以卜吉。”乃刳龟,七十二钻而无遗生筴。 仲尼曰:“神龟能见梦于元君,而不能避余且之 网;知能七十二钻而无遗囗,不能避刳肠之患。如是则知有所困,神 有所不及也。虽有至知,万人谋之。鱼不畏网而畏鹈鹕。去小知而大 知明,去善而自善矣。婴儿生,无硕师而能言,与能言者处也。”

    惠子谓庄子曰:“子言无用。”庄子曰:“知无用而始可与言用矣 。夫地非不广且大也,人之所用容足耳,然则厕足而垫之致黄泉,人 尚有用乎?”惠子曰:“无用。”庄子曰:“然则无用之为用也亦明 矣。”

    庄子曰:“人有能游,且得不游乎!人而不能游,且得游乎!夫流 遁之志,决绝之行,噫,其非至知厚德之任与!覆坠而不反,火驰而 不顾。虽相与为君臣,时也。易世而无以相贱。故曰:至人不留行焉 。夫尊古而卑今,学者之流也。且以狶韦氏之流观今之世,夫孰能不 波!唯至人乃能游于世而不僻,顺人而不失己。彼教不学,承意不彼。 目彻为明,耳彻为聪,鼻彻为颤,口彻为甘,心彻为知,知彻为德。 凡道不欲壅,壅则哽,哽而不止则跈,跈则众害生。物之有知者恃息。 其不殷,非天之罪。天之穿之,日夜无降,人则顾塞其窦。胞有重阆, 心有天游。室无空虚,则妇姑勃谿;心无天游,则六凿相攘。大林丘 山之善于人也,亦神者不胜。德溢乎名,名溢乎暴,谋稽乎誸,知出 乎争,柴生乎守,官事果乎众宜。春雨日时,草木怒生,铫鎒于是乎 始修,草木之倒植者过半而不知其然。静默可以补病,眦媙可以休老, 宁可以止遽。虽然,若是劳者之务 也,非佚者之所未尝过而问焉;圣人之所以骇天下,神人未尝过而问 焉;贤人所以骇世,圣人未尝过而问焉;君子所以骇国,贤人未尝过 而问焉;小人所以合时,君子未尝过而问焉。

    演门有亲死者,以善毁爵为官师,其党人毁而死者半。尧与许由天 下,许由逃之;汤与务光,务光怒之;纪他闻之,帅弟子而蹲于窾水, 诸侯吊之。三年,申徒狄因以踣河。

    荃者所以在鱼,得鱼而忘荃;蹄者所以在兔,得兔而忘蹄;言者所以在意,得意而忘言。吾安得夫忘言之人而与之言哉!”

     

    译文

    外在事物不可能有个定准,所以忠良之士关龙逢被斩杀,比干遭杀害,箕子被迫装疯,而谀臣恶来同样不能免于一死,暴君夏桀和殷纣也同样身毁国亡。国君无不希望他的臣子效忠于己,可是竭尽忠心未必能够取得信任,所以伍子胥被赐死而且飘尸江中,苌弘被流放西蜀而死,西蜀人珍藏他的血液三年后竟化作碧玉。做父母的无不希望子女孝顺,可是竭尽孝心未必能够受到怜爱,所以孝己愁苦而死、曾参悲切一生。木与木相互摩擦就会燃烧,金属跟火相互厮守就会熔化。阴与阳错乱不顺,天与地都会大受惊骇,于是雷声隆隆,雷雨中夹着闪电,甚至烧毁高大的树木。心存忧喜而且在这两种心境中越陷越深就会没有办法逃避,小心翼翼、恐惧不安而又一无所成,内心像高悬在天地之间,忧郁沉闷,利害得失在心中碰撞,于是内心烦乱焦躁万分;世俗人内热如火烧毁了中和之气,清虚淡泊的心境抑制不住内心如火的焦虑,于是便精神颓然玄理荡然无存。
    庄周家境贫寒,于是向监河侯借粮。监河侯说:“行,我即将收取封邑的税金,打算借给你三百金,好吗?”庄周听了脸色骤变忿忿地说:“我昨天来的时候,有谁在半道上呼唤我。我回头看看路上车轮辗过的小坑洼处,有条鲫鱼在那里挣扎。我问它:‘鲫鱼,你干什么呢?’鲫鱼回答:‘我是东海水族中的一员。你也许能用斗升之水使我活下来吧。’我对它说:‘行啊,我将到南方去游说吴王越王,引发西江之水来迎候你,可以吗?’鲫鱼变了脸色生气地说:‘我失去我经常生活的环境,没有安身之处。眼下我能得到斗升那样多的水就活下来了,而你竟说出这样的话,还不如早点到干鱼店里找我!’”
    任国公子做了个大鱼钩系上粗大的黑绳,用五十头牛牲做钓饵,蹲在会稽山上,把钓竿投向东海,每天都这样钓鱼,整整一年一条鱼也没钓到。不久大鱼食吞鱼饵,牵着巨大的钓钩,急速沉没海底,又迅急地扬起脊背腾身而起,掀起如山的白浪,海水剧烈震荡,吼声犹如鬼神,震惊千里之外。任公子钓得这样一条大鱼,将它剖开制成鱼干,从浙江以东,到苍梧以北,没有谁不饱饱地吃上这条鱼的。这以后那些浅薄之人和喜好品评议论之士,都大为吃惊奔走相告。他们举着钓竿丝绳,奔跑在山沟小渠旁,守候小鱼上钩,至于想得到大鱼那就很难很难了。修饰浅薄的言辞以求得高高的美名,对于达到通晓大道的境界来说距离也就很远很远了,因此说不曾了解过任公子有所大成的志趣,恐怕也不可以说是善于治理天下,而且其间的差距也是很远很远了。
    儒生表面运用诗、书而暗地里却在盗墓。大儒在上面向下传话:“太阳快升起来了,事情进行得怎么样?”小儒说:“下裙和内衣还未解开,口中还含着珠子。古诗上就有这样的诗句:‘青青的麦苗,长在山坡上。生前不愿周济别人,死了怎么还含着珠子!’”大儒说:“挤压他的两鬓,按着他的胡须,你再用锤子敲打他的下巴,慢慢地分开他的两颊,不要损坏了口中的珠子!”
    老莱子的弟子出外打柴,遇上了孔丘,打柴归来告诉给老莱子,说:“有个人在那里,上身长下身短,伸颈曲背而且两耳后贴,眼光敏锐周遍四方,不知道他是姓什么的人。”老莱子说:“这个人一定是孔丘。快去叫他来见我。”孔丘来了,老莱子说:“孔丘,去掉你仪态上的矜持和容颜上的睿智之态,那就可以成为君子了。”孔丘听了后谦恭地作揖而退,面容顿改心悸不安地问道:“我所追求的仁义之学可以修进并为世人所用吗?”老莱子说:“不忍心一世的损伤却会留下使后世奔波不息的祸患,你是本来就孤陋蔽塞,还是才智赶不上呢?布施恩惠以博取欢心并因此自命不凡,这是终身的丑恶,是庸人的行为罢了,这样的人总是用名声来相互招引,用私利来相互勾结。与其称赞唐尧非议夏桀,不如两种情况都能遗忘而且堵住一切称誉。背逆事理与物性定会受到损伤,心性被搅乱就会邪念顿起。圣哲的人顺应事理稳妥行事,因而总是事成功就。你执意推行仁义而且以此自矜又将会怎么样呢?”
    宋元君半夜里梦见有人披散着头发在侧门旁窥视,说:“我来自名叫宰路的深渊,我作为清江的使者出使河伯的居所,渔夫余且捕捉了我。”宋元君醒来,派人占卜,说:“这是一只神龟。”宋元君问:“渔夫有名叫余且的吗?”左右侍臣回答:“有。”宋元君说:“叫余且来朝见我。”第二天,余且来朝。宋元君问:“你捕捞到了什么?”余且回答:“我的网捕捉到一只白龟,周长五尺。”宋元君说:“献出你捕获的白龟”。白龟送到,宋元君一会儿想杀到,一会儿又想养起来,心理正犯疑惑,卜问吉凶,说:“杀掉白龟用来占卜,一定大吉。”于是把白龟剖开挖空,用龟板占卜数十次推断起来也没有一点失误。孔子知道后说:“神龟能显梦给宋元君,却不能避开余且的鱼网;才智能占卜数十次也没有一点失误,却不能逃脱剖腹挖肠祸患。如此说来,才智也有困窘的时候,神灵也有考虑不到的地方。即使存在最高超的智慧,也匹敌不了万人的谋算。鱼儿即使不畏惧鱼网却也会害怕鹈鹕。摒弃小聪明方才显示大智慧,除去矫饰的善行方才能使自己真正回到自然的善性。婴儿生下地来没有高明的老师指教也能学会说话,只因为跟会说话的人自然相处。”
    惠子对庄子说:“你的言论没有用处。”庄子说:“懂得没有用处方才能够跟他谈论有用。大地不能不说是既广且大了,人所用的只是脚能踩踏的一小块罢了。既然如此,那么只留下脚踩踏的一小块其余全都挖掉,一直挖到黄泉,大地对人来说还有用吗?”惠子说:“当然没有用处。”庄子说:“如此说来,没有用处的用处也就很明白了。”
    庄子说:“人若能随心而游,那么难道还会不自适自乐吗?人假如不能随心而游,那么难道还能够自适自乐吗?流荡忘返于外物的心思,矢志不渝弃世孤高的行为,唉,恐怕不是真知大德之人的所作所为吧!沉溺于世事而不知悔悟,心急如焚地追逐外物而不愿反顾,即使相互间有的为君有的为臣,也只是看作一时的机遇,时世变化后就没有谁会认为自己地位低下了。所以说道德修养极为高尚的人从不愿意在人生的旅途上有所滞留。崇尚古代鄙薄当今,这是未能通达事理之人的观点。用狶韦氏之流的角度来观察当今的世事,谁又能不在心中引起波动?道德修养极为高尚的人方才能够混迹于世而不出现邪僻,顺随于众人之中却不会失却自己的真性。尊古卑今的见教不应学取,禀受其意也不必相互对立争辩不已。”
    眼光敏锐叫做明,耳朵灵敏叫做聪,鼻子灵敏叫做膻,口感灵敏叫做甘,心灵透彻叫做智,聪明贯达叫做德。大凡道德总不希望有所壅塞,壅塞就会出现梗阻,梗阻而不能排除就会出现相互践踏,相互残踏那么各种祸害就会随之而起。物类有知觉靠的是气息,假如气息不盛,那么绝不是自然禀赋的过失。自然的真性贯穿万物,日夜不停,可是人们却反而堵塞自身的孔窍。腹腔有许多空旷之处因而能容受五脏怀藏胎儿,内心虚空便会没有拘系地顺应自然而游乐。屋里没有虚空感,婆媳之间就会争吵不休;内心不能虚空而且游心于自然,那么六种官能就会出现纷扰。森林与山丘之所以适宜于人,也是因为人们的内心促狭、心神不爽。
    德行的外溢是由于名声,名声的外溢是由于张扬,谋略的考究是由于危急,才智的运用是由于争斗,闭塞的出现是由于执滞,官府事务处理果决是由于顺应了民众。春雨应时而降,草木勃然而生,锄地的农具开始整修,田地里杂草锄后再生超过半数,而人们往往并不知道为什么会这样。
    沉静可以调养病体,摩摩擦擦可以延缓衰老,宁寂安定可以止息内心的急促。虽然如此,像这样,仍是操劳的人所务必要做到的,闲逸的人却从不予以过问。圣人用来惊骇天下的办法,神人不曾过问;贤人用来惊骇时世的办法,圣人不曾过问;君子用来惊骇国人的办法,贤人不曾过问;小人用来苟合于一时的办法,君子也不曾过问。
    东门口有个死了亲人的人,因为格外哀伤日渐消瘦而加官进爵封为官师,他的同乡仿效他也消瘦毁容却死者过半。尧要禅让天下给许由,许由因而逃到箕山;商汤想把天下禅让给务光,务光大发脾气;纪他知道了这件事,率领弟子隐居在窾水一带,诸侯纷纷前往慰问,过了三年,申徒狄仰慕其名而投河自溺。
    竹笱是用来捕鱼的,捕到鱼后就忘掉了鱼笱;兔网是用来捕捉兔子的,捕到兔子后就忘掉了兔网;言语是用来传告思想的,领会了意思就忘掉了言语。我怎么才能寻找到忘掉言语的人而跟他谈一谈呢!

    解题

    待续……

     

     

  • Django – 前端提交数据, 后端接收并入库简例 (ModelForm)

    models.py

     

    class Boss(models.Model):
        name = models.CharField(verbose_name="姓名", max_length=64)
        age = models.IntegerField(verbose_name="年龄")
        img = models.CharField(verbose_name="头像", max_length=256)

     

    这种写法需要在view_name.py文件中去处处理 待保存文件的路径问题, 并调用create方法.

    media_file_path = os.path.join("media", image_object.name)
    print(media_file_path)
    f = open(media_file_path, mode="wb")
    for chunk in image_object.chunks():
        f.write(chunk)
        f.close()
    
    models.Boss.objects.create(
        name = form.cleaned_data['name'],
        age = form.cleaned_data['age'],
        img = media_file_path,

     

     

    class City(models.Model):
        name = models.CharField(verbose_name="名称", max_length=64)
        count = models.IntegerField(verbose_name="人口")
    
        # 此处写成"FileField", 而不是"IntegerField", 这样FileField会多出upload_to='目录名'属性, 在入库时可快速将图片保存到该目录
        logo = models.FileField(verbose_name="logo", max_length=256, upload_to='city/')

     

    view_name.py

    class UpModelForm(BootStrapModelForm):
        class Meta:
    
            model = models.City
            fields = "__all__"
    
    def upload_model_form(request):
        title = "ModelForm上传"
        if request.method == "GET":
            form = UpModelForm()
            return render(request, 'upload_form.html', {'form': form, "title": title})
    
    
        form = UpModelForm(data=request.POST, files=request.FILES)
        if form.is_valid():
            form.save()
            return HttpResponse('成功')

     

    可以看到这种写法非常简捷,  保存路径已在创建model时设置, 而保存数据只需form.save()即可.

    结果验证

    • 保存路径: logo = models.FileField(verbose_name=”logo”, max_length=256, upload_to=’city/’)
    • 如何保存: form.save()

     

     

    前置条件

    配置media目录. (实际使用中, 由于目录位置等差异, 根据实际情调整.)

    setting.py

    MEDIA_ROOT = os.path.join(BASE_DIR, "media")
    MEDIA_URL = "/media/"

     

    urls.py 路由

     

    from django.views.static import serve
    from django.conf import settings
    re_path(r'^media/(?P<path>.*)$', serve, {"document_root": settings.MEDIA_ROOT}, name='media'),

     

  • Django – 前端提交数据, 后端接收并入库简例 (Form)

    view

    class UpForm(BootStrapForm):  封装了bootstrap的Form组件的类, 让表单快速获得bootstrap的样式
        bootstrap_exclude_fields = ['img']  # 在BootStrapForm中,排除img表单的样式
        name = forms.CharField(label="姓名")
        age = forms.IntegerField(label="年龄")
        img = forms.FileField(label="头像")
    
    
    def upload_form(request):
        title = "表格上传"
    
        if request.method == "GET":
            form = UpForm()
            return render(request, 'upload_form.html', {'form':form, "title":title})
    
        if request.method == "POST":
            # 获取前端用户提交的数据
            form = UpForm(data=request.POST, files = request.FILES)
            if form.is_valid():
                image_object = form.cleaned_data.get("img")
              
                # 对图片数据进行特殊处理
                db_file_path = os.path.join('static', 'img', image_object.name)
                file_path = os.path.join('app01', db_file_path)
                print(file_path)
                f = open(file_path, mode="wb")
                for chunk in image_object.chunks():
                    f.write(chunk)
                    f.close()
                # 写入数据库
                models.Boss.objects.create(
                    name = form.cleaned_data['name'],
                    age = form.cleaned_data['age'],
                    img = db_file_path,
                )
    
        return render(request, 'upload_form.html', {'form': form, "title": title})
    

     

    template

    <form method="post" novalidate enctype="multipart/form-data">
        {% csrf_token %}
    
        {% for field in form %}
            <div class="form-group">
                <label>{{ field.label }}</label>
                {{ field }}
                <span style="color: red">{{ field.errors.0 }}</span>
            </div>
        {% endfor %}
    
        <button type="submit" class="btn btn-primary">提交</button>
    
    </form>

     

    router

    path('upload/form/', upload.upload_form)

     

  • Django – Excel上传数据 (Openpyxl)

    view

    def depart_multi(request):
        from openpyxl import load_workbook
    
        # 1.获取文件对象
        file_object = request.FILES.get("exc")
        print(file_object)
        print(type(file_object))
    
    
        # 2.对象传递给openpyxl, 并由openpyxl读取其中内容
        wb = load_workbook(file_object)
        sheet = wb.worksheets[0]
    
    
        # 3. 循环获取数据
        for row in sheet.iter_rows(min_row=2):
            text = row[0].value
            print(text)
    
            # 4. 写入数据库 (更多的验证规则, 此处省略)
            exists = models.Department.objects.filter(title=text).exists()
            if not exists:
                models.Department.objects.create(title=text)
    
        return redirect("/depart/list")

     

    template

     

    <div class="panel-body">
    
      <form method="post" enctype="multipart/form-data" action="/depart/multi/">
          {% csrf_token %}
          <div class="form-group">
            <input type="file" name="exc">
          </div>
    
          <input type="submit" value="上传" class="btn btn-info btn-sm">
    
      </form>
    </div>

     

  • Django – Form和ModelForm组件

    表单的很多字段信息, 和models.py文件里的模型是一致的,为了避免重复代码,以及提高效率, 可以使用ModelForm,将模型和表单进行绑定。

    Form

    views.py

    //创建业务类MyForm, 继承django中Form类
    class MyForm(Form):  
        // Form类会在html中渲染出原始表单
        user = forms.CharField(widget=forms.Input)
        pwd = form.CharFiled(widget=forms.Input)
        email = form.CharFiled(widget=forms.Input)
        account = form.CharFiled(widget=forms.Input)
        create_time = form.CharFiled(widget=forms.Input)
        depart = form.CharFiled(widget=forms.Input)
        gender = form.CharFiled(widget=forms.Input)
    
    
    def user_add(request):
        if request.method == "GET":
            form = MyForm()
            return render(request, 'user_add.html',{"form":form})

     

    user_add.html (Form)

    <form method="post">
        {% for field in form%}
        	{{ field }}
        {% endfor %}
        <!-- <input type="text"  placeholder="姓名" name="user" /> -->
    </form>

    或者

    <form method="post">
        {{ form.user }}
        {{ form.pwd }}
        {{ form.email }}
        <!-- <input type="text"  placeholder="姓名" name="user" /> -->
    </form>

     

     

    ModelForm

     

    models.py 

    class UserInfo(models.Model):
        """ 员工表 """
        name = models.CharField(verbose_name="姓名", max_length=16)
        password = models.CharField(verbose_name="密码", max_length=64)
        age = models.IntegerField(verbose_name="年龄")
        account = models.DecimalField(verbose_name="账户余额", max_digits=10, decimal_places=2, default=0)
        create_time = models.DateTimeField(verbose_name="入职时间")
        depart = models.ForeignKey(to="Department", to_field="id", on_delete=models.CASCADE)
        gender_choices = (
            (1, "男"),
            (2, "女"),
        )
        gender = models.SmallIntegerField(verbose_name="性别", choices=gender_choices)

     

     

    views.py 快速建立表单

    class UserModelForm(forms.ModelForm):
        name = forms.CharField(min_length=2, label="用户名")
        password = forms.CharField(label="密码")
        class Meta:
            model = UserInfo
            fields = ["name","password","age","xx"]
    
    
    def user_add(request):
        if request.method == "GET":
            form = MyForm()
            return render(request, 'user_add.html',{"form":form})

    views.py 给表单添加样式

     

    class UserModelForm(forms.ModelForm):
        name = forms.CharField(min_length=2, label="用户名")
        password = forms.CharField(label="密码")
        # create_time = forms.DateTimeField()
        class Meta:
            model = models.UserInfo
            fields = ['name', 'password', 'age', 'account', 'create_time', 'gender', 'depart']
            
            # 方法1: 为前端元素添加类属性, 使其获得样式. 
    
            # widgets = {
            #     "name":forms.TextInput(attrs={"class":"form-control"})
            # }
    
            # 方法2: 为前端元素添加类属性, 使其获得样式. 
        def __init__(self, *args, **kwargs):
            super().__init__(*args, **kwargs)  #super() 函数是用于调用父类(超类)的一个方法。
            for name, field in self.fields.items():
                field.widget.attrs = {"class":"form-control", "placeholder":field.label}
    

     

     

    user_add.html (ModelForm)

    <form method="post" novalidate>
        {% csrf_token %}
    
        {% for field in form %}
            <div class="form-group">
                <label>{{ field.label }}</label>
                {{ field }}
                <span style="color: red">{{ field.errors.0 }}</span>
            </div>
        {% endfor %}
    
        <button type="submit" class="btn btn-primary">提交</button>
    
    </form>

     

     

     

  • 经验主义

    经验主义不是指做事情有经验, 而是指我们的知识来源于感官经验(六根输入),  这是一种认识论学说,  研究感官经验能确定的事物, 认为感性经验是知识的来源,一切知识都通过经验而获得,并在经验中得到验证。

     

    与之相对的是“理性主义”,  而不是“缺乏经验”。

  • 何以华夏?

    对于华夏一词,  微观层面的含义和细节有诸多争议, 但其核心主体有着相对固定的指向。

    1 . “华夏” 是民族的名称。他们认为汉族前身的主体人群,  以“夏”为族名,定居在华山之周,夏水(汉水)之旁, 故得名“华夏”。

    2. “华夏” 指的是一个地域文化概念。遥远的中华民族的远祖们曾经分为三个主要的集团,他们分别是华夏、东夷和苗蛮。在不断的争战和竞争中,黄帝取得了最终的霸主地位,他领导的华夏集团于是成为当时的文化和政治主流。“华”、“夏”作为中原,称四方为”夷蛮戎狄”。

    3. “华夏”最初是代指周王朝 及属于周“王母弟甥舅”的诸侯国 ,后来扩大至将九州地区全部包括在内,遂成为神州(即汉地,汉族的民族共同地域) 及汉族的别称  ,又称为“汉地九州” 。

    4. “夏” 可能来自于夏王朝,而“华”字具有“美丽, 盛大”的含义, 即“盛大的夏王朝”,类似“大汉盛唐”里的“大”和“盛”, 作为夏的前置修饰语, 合称为“华夏”。

    5. “华夏”作为汉族和中原民族的别称,《左传•襄公十四年》:“我诸戎饮食衣服不与华同,贽币不通,言语不达,何恶之能为?”   羌戎人 驹支 说服晋国卿范宣子:“我们戎人的饮食衣服与华夏之族不同,货币不通,言语不同,怎能去做坏事?不到会参加,也没有什么可烦恼的。”

    6. 东汉经学家许慎编著《说文解字》, 夏: 中國之人也。从夊从頁从𦥑。𦥑,兩手;夊,兩足也。𠍺,古文夏。胡雅切〖注〗𡔰、昰、𡕾,亦古文夏。