From b07073f0ccf9ebfe58294ccc04f678244b2942d6 Mon Sep 17 00:00:00 2001 From: xqz_admin Date: Tue, 24 Jun 2025 12:25:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B01.2.3=EF=BC=8C=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E8=A7=81readme=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 9 +- db.sqlite3 | Bin 163840 -> 167936 bytes home/__pycache__/admin.cpython-39.pyc | Bin 841 -> 1030 bytes home/__pycache__/models.cpython-39.pyc | Bin 1666 -> 2295 bytes home/__pycache__/urls.cpython-39.pyc | Bin 344 -> 381 bytes home/__pycache__/views.cpython-39.pyc | Bin 2361 -> 3177 bytes home/admin.py | 6 +- .../0007_articletag_articles_tag_id.py | 31 +++++++ ..._articletag_articles_tag_id.cpython-39.pyc | Bin 0 -> 1047 bytes home/models.py | 12 ++- home/templates/bottom.html | 16 ++-- home/urls.py | 3 +- home/views.py | 87 +++++++++++------- 13 files changed, 118 insertions(+), 46 deletions(-) create mode 100644 home/migrations/0007_articletag_articles_tag_id.py create mode 100644 home/migrations/__pycache__/0007_articletag_articles_tag_id.cpython-39.pyc diff --git a/README.md b/README.md index 89159bd..0e46bcd 100644 --- a/README.md +++ b/README.md @@ -56,4 +56,11 @@ python manage.py runserver 9999 2025年6月23日 新增 1.友联管理 - 2.站点设置 \ No newline at end of file + 2.站点设置 + +###### 1.2.3 + 2025年6月234日 + 新增 + 1.分类管理 + 2.文章分类的设置 + 3.分类文章的列表 \ No newline at end of file diff --git a/db.sqlite3 b/db.sqlite3 index b05c0696a057d94c56c19deb7ca33323b238b6d1..106d49160ef2db96af5ac269779563c1cfa9dd16 100644 GIT binary patch delta 3212 zcmai1ZERat8TPr?j_t(tX|{G=mZWpiPdBl1@Adsm$6DL*XZ-yY$J^vx+t=TA9LILz zR8wjs=wRAd6(LLfVEHite_#uR1;p2np-I3b2BTk%24Q z?TZ6*=A$yn;dxVTsVra^#w7S!J)bHGbw0Z{TuF3)Rkv5zTeQmO=QR z4^M!u>f3@HTYUYL2y?KeVvhWpc z*Q9-S>*8O({nJx3qSwrfDlLc$Anfz&8}~d7ea}>muVnXo_KmxqlX}tfL7h&;r_=i) zik4lc%MUwW89=e2o11d~qC$06by5X~Zf>_P4Lx#L3Z}q*-IzuSX26{~XZrR#R2dFQ zfe!4GpuZe`^u-kvQ@^t*e{E5rzM=lR`nvj^?e-Ju`(-EqDy)YyJv8)CfB8Sxq;0*p zKlcKK1d{6f0h6jY^z$KX@FS&HIjTr1j?13`7Y3e`U6Iz1n=&U*Txwt4Xr7a6EaRX( zlCPwNwcQfft1Gdz5^0*|GaNkEZ^Z4^ z?OaZSAA+4{vY^SL2KDFWTnfjLcruv_vX?hDxDxeM?h2v1O-Tso=+}!|q zZyV(L-gvr)Q$0N0LtPI~by0P)hbMY?yobj+GcSNEr~!_4W_x&1tfEpyVj{G%XXV90? zC((ISjeHY%7#Rf5gR_!1B(=Sk*8ff$loB`!&I6^1diVQJz4yXbsm`B%55_xhT?6+_ zGf766eC&xQ9+U6uUEC~A83>M{7+TPa5yrv!&P&(88SJwdn1Nv!isVw$B4ebN6YmWF z5zI`}EXF+A_zW&a8E}Hd2{Jv^DO?4!kKdhv8;k@)V>EGE%r*gr#Tl~w8RqKc67t9$ zb7E&H(!dckOVe3hXZTI7e83~-+Ie80QJvgGuN)$ua5!G{WM_p4-A9!2!=7H4Eb=CFl_HTv`tSg5k z<895jQ6aXW&W$moB16?bkg%89r0O9sC>c3EYE%M^vUBbTGCf-1)8%}njmn24qix-T zJyL(6n9f(mklD`DW5}V-FUF8bHM*e~l1#KmCi;<=$B`8v?YupXI8+wdpk!3PoATu& z2#X++PVER{lZvP3)}{7GDmywT8K-(4%8v6vgc%TenP1W(GObefu|)NO^6RpXx7#1e z6c@)8GSAaa)8?Ds(QX(7*Samb((sknO_4-=!I=&?iN!f{Jla@pwFrt2R&ANAc}1`X znGkPHQXIDwsPjd4&f*BJ`NK8*Hy187-R0#7)y)C;M3g=DcRjaRIBLl8< z&Y$xHgXY#8VOq);vSw>4w=`!qnMx*eAQ%YcO+kCf?px&ML$-N$-JZ(eY@Q}UHp@K0 zRhx_XhNlsj%SD`_fMv}aUnoRMQ7UfshTOQTwc%u3O(;m_8?SyLl|FS%Bum6WX+H7;iyjtV2h zgPAy;N!zNRxUe6Z1u8mj)t4Es68f$Y# zW0AGud``b;vR8|qh~90?E)+AxMSa}ZbP8*QWoxsUNmQJK5TS8%G2=c$5C1Vnk~uIg1%+-6=G{PkFXGSmTR&4a=OTb z^VOt&BM~c=g?N;&`9ngir1u9_=}b8quV)%-VRs4V;`y}DNLA>>YSLLFSx0sjZ-iIU z@mYe_XB*B~yydP{my98sIlkXEJ37u6cb;=1 z{J_Bj;yISW*Cp^@@H%`8zJ7VQ`ZClHN>Rz^ZciRWKN;f+@h^a;*D#d;m5lWJ-!~pd zwD%9f8xjS4RRaG3--Fl0%llRMXYsZDw_?2SL9+YyfXKQiRdf+mqNq~Y8_C5~V4!>X Oquo)ruPA#r^M3(_k%{2| delta 1519 zcmZXUTZki78po?DJ)P_1*s@IM>1n&iLEXi~u1cj+NxRHU#7=xF=8$bqE!P~$Iz5|58%@;s_=WT<##)T(XqV^ zzp!!oQWaM?bvzkBvuTm5X+cFT5asV8h_b=YWu zw)9`^;3n9yxOD;1Y!kBu+SVQ056GP@q-*=F$pT%}H!nUQ$~H1we7lV>zp&qh%&XUc ze*G+LhBlwr!p$qiA1@%z^;TKxG`fqyV@SkGoiRgOu7@_?V~B4Jya)x4^()qh!3=E^ z4-5a;K}d`EplclIC zwaIq5HlOBIV$e@}HAxNNt}-#sh^ZW&RLbs1zvh}Yv~gKR>uDFo_EojemZYe+qeg3j z;#Lm_wQ|GD#;3I*qqV1HCXJ~bN=VTGY8p(9BA$#wuwqb{=I9PHicT1YiV8|7!$hb6 z8x8hm^>8kn3A0hZmTGWnM&fZ+t>H~yw%-e6V`>3y7nC?k3GHApALZCM!%rJhq3uqf zGG8uehdnVS%Y{ZLR`z08nTbz}S-BqPC#_nbKFIj<9&Hl9>k2!qj@&JnsNXa`AyUpsD@1+FaIMvWv7)B>rp;3l+w*+>QoJ3_ZE@T;8 zXwYe@#FY*!2i?IqSU%{Ex>VlBQxkUuV>4J^>Cqn2ujQIpq%AaE{sS_}ORcz^Ct5@~ zo5t`deITPT-i3EnqU|pZMzlH$Pq|ufC@Q^BOXFfyAw3vYxNf}Yan-bODB0(xH04jr zxk)z8rW+xlpd2!umXxTKV$}%U%DGgsmMo}Jp1=b68kLMB@xp9cX^~1O;jgeos>b!Z zfnr8P6-IVdBQ6aq##JFCD`Zxz(siXV%M^lSpcHG3q*%+lmVSMN4whk{6ZiyE#)Jvlr#raA$v&l7z->m&O_I93W&<@S*9%OXeCMn0jV zc~CX4W);>i)P)8XEr)TsTWa*0bS20NXrj|hj$9-s%4oMm;QrFM$TnvE8DHgnW04$Z zWN&FWm{rqRf0G;(U9)T9uH^BkScz(T(n+DckBxH8vb66!jQs|%9zF4 z%-qZv#g)Pt%%I7&vB8>Y@*hU2dI6yBRE8+V6ox3K6vim#6egfF^DTbIqLR$yoYauS zbjOt3%sfq|TTGcLx0p*3)BQAAinxKgig-W-FNoj+5yGg12#6~IB&313mG^uelTR=O@ZI7<*j6MlS(I5#2xKA;69+Q~qX;(;b8s*M07mXGo&W#< delta 65 zcmZqUILXGB$ji&c00hT@xQ={H?!+_(*zocUCr~nHy`iKo8RxPy>i)> z@G)hlGtwpLFRtVt4V6V~(Gm)fKn|p??8vh8jsyy*w-19EGTB8pxm=$c~PE160tk zUjQA9TasgF4Ub}$~iyPGMdUVTOCtIUU+#GFo*V}Xh z61L+`OGeZ9;eFn&Vv7tEA4+S|s??WPaFH5&?Y_*khy*wL5-sBJ-*41!M1)3lr;~W$ z_UrW)9+>IciUcgLfy0O;` zh{#e-aK}vJ;cy6w6q~Y!FP-NR)NDG1zjT_587_EYm~|zIdrLkEfGIvO>uSfNLZv); zw9ExxpL4`-hjMS?Xozwt;&V;8gs-Ux>zULRaK<8^dKbkwwPOr|dZ1(|M96a#3Pc*B zZ;C!*5iFc#p=N_EMvB-kK@mz~q?~DGp;b_uBGV{mpn~rdOdse@6;V9{RYY|aQ9TQ@ zFo#&5gL%BxOU%r!H5vg1ncn0V`@`?=H(+&Mh{ z_G6}d(DlRIW{>~)^7y0OzQPJXZhA=&PZl2CzH{{3&fwlJqkBJ54o0zT_{pQ=pT8P> z{^Mx>wlIticaIFSq-uor>rQndSOh$n3-M^i;CBZ9m7ko3Q<;m+lxuV?~?IM zO3(nT^e(PwlaxnT)M77Y8jb<8mwJ@=?eIOaC1}FT)oTrR<;L=|V_*q%eMreBXgA5) zgmFBxoW{`{3RA8K&T(16_mW!CDW7rXj!!;2mvQvJ*#`!)tZ=IOBlEyUo>)*so|IT= zoX}-|ouoMB1z;f1fJb-%70NF-;Z#ZCJG}ed;L~3bp~nyR=<{ek6XQj3IFt82!D8wr zN0J!0Z{#AW7N>38cgzblck Kl2)~=v;P3*9T{){ delta 671 zcmZ`%&ubGw6yDjL$!^lkB%2>%F<6a7jRAYGV5LP1f_jM;FA@*S))|w?CV{t`;z>cP zg10ar-t4sqy?gMc|HR_8`X_i3-`k2%h&#NG*?Hgl_WOqY6}&9Vs9Y{t_=Mjc4nOj_ zY_auu_gX;}9#|cBzI(33vAKnh2r~RWhua6EtcNnL~nx4HAFzxkI)3tZ zj)rRpnHz>l3SrnZ@5I@50AvTs1d_lePVx3If;%G}D`=Xp;?Z_44yTE5Y~$aKG{Hd- zSP8v(Ofnyrw6U0UqyWe4^M?6Qm=uac=f-!>FoB0#M!9S2Z9KdWOVnDVPQhAOC&HRd zart5cPdk`%HXA88b#gv8Mvl*$rnmZHK}=Y|Zht9)bo4mZNr)QDq;Y|OKKlQ_zc BfVuzx diff --git a/home/__pycache__/urls.cpython-39.pyc b/home/__pycache__/urls.cpython-39.pyc index 8e664a129f0ac5d03d742c20f63976dd78627519..19caa6e269301ffc9a9133d3b3e55b3086a72623 100644 GIT binary patch delta 149 zcmcb?^p{CHk(ZZ?0SK0;L}i=@(vLwLWWWmKH~?|6*FbH5Jrjw+GnK55BB3e@rw8<^$H@|m;8VQMfpy3&v@)0m{HwMpHr7}zVlT@?RLY$ z?~UJtqd#{n>kAsJ|7;B2Kq-z;2}`idny`>fc*q%zd1gW;+NQWFI%4xf7PdrJY(df%+u{kd9dSkc0PUt|ziaiLe1!F_ z9@m~srXrEL^|n&8zb3^jpB71vY5R6GM8lqqNpbn(=y)i%P>SbJDQnD5`56v!&01Kc zHMUV46c@!q@dZC|7p!Dh)b2|Lo1Uv(m8vY!-6B=VAeyUDE(gle>i^fCFSjAP;8%jh%C9#tSo(Eg4J~-jddvFz z&VrZh)Gj&v%g3%@C;W^t>tNgXmiG}%$M}$^qUY(xn^L85mLQI@g&AcVmG+|93<1}+ zg7^v~Jv$80PpA8Np&j&!(67hFA62zQwk zqj%S|NwLtI7pE`e4>9XyPh25STsD0QinT`^_{4bR$B@N@`Q?wWxQSvC=yP-^&|_XA zfgZ30Gb5ys;1AfTBkVJF>YiB$JeM~RbZ-jH1t1`AV&qS`a2C$W#x*uxZR3`%6s23+ zco<2H$i`pzB|~zuF|`5821)~^iPA!8tIn}i+NC3c6JC0yPwmiBo5z;w9$RALq=VQr z`VU!!Ar^Y67z{FXWM5CkoDTTazdrctlhZFh`{>Kh-v9Tf|LoN&LuD*3sC-LPbhD7zqgTsY<2_*fvC>n`=3!gPBYY(|itaPm_B} z2XQ``K)aC7U>&(bi*4zkPL{&JN!y68_V&|Eff<8bf*=QX?rV2HmDmYE-|SNUlzKm- z>gQDbf~sFq^((3<%OxSeBt|bVhMJ{ece$rQROM*cTuD+9ZmkUlhA6`p?R}}OeKUe) zyY5t4mr=S!D2-%1N)MA_Kp9S3Eq;#*jKp?O>iV3WmMq0N-zE}{P9Kgv%@c=3N#35jV5N<4-(g8Fb zK+^#<9YE6oG@WrvI49o1Ep6dmvrgNkYxwVGX#QZ zirK^m=omcUJ~OljdUNn{5d1}pTLYlr)H$;lumNfWO$i&s<_ibJ763W60$m+5pu`4R zo&z3SAjAbiT#%PL1}?@O;o{ZdfxtWzIxm^yN>mlO=4L=b0jo z+ShBEKxW~ha82m+=2D1fhhd!7Qb11zy&Bzyjphdj@>$G()Lu?(+}qn)gB87?3~PYU zqQgY{w<>ay25P(Xm2Pd5d6%}ZB)!$5^9x&`ZA)1ctr{cV>I?Mf5a_ zLmOwg99bk##U3G)iXWjO;^?q|?*NNy=)Px# literal 2361 zcmZuz%WoS+7~k2q*N-@TkrXJ1m$X$I7cOu>6{t{gsB)m~ftA48?riKe>qlnCX&bF2 zM36wBo{>-v&XE(>{v{mdN>$VooQpvGzOfxUfwjJG9{FDLJrmdKfr0Pr{m;6;V)q*z zRzDMm4*F%0?r;~Y$35<2^?8K{SS!4G z+X!pVAkhd-<%)E`Q=w{~NICj6Ek?sZk%mmM%L!2|KC;9G+yE3;fTYo5Q}YNmZ5k7! zGp0;BoWNnXr;Uo3$+%ctS@xGLw0#nnfnlc088dp=b}{eySR)H@mxPef6C7 z<1ANJmW)DQ1-HR_V>sB!I?5Z~>!pb-lojW>s%Rb(C&*Ue5%LLDNV^&NM38`01&dwQ z`PmR_`1AAkT6c?76s@Q`jtBeiw2~oDTcd|CanLHV{wPn!S?lAZJ8Va-?y#S>_OkST zu{CyX}}31qN_X|wt7FV_?6xI5uj3m3v-dy;Wy!Vmu`NqU7 zjj2_d@UPi(I6E|t7&CUylm>ijZX=3zo(;ZKHa$IbRpX|}5Y?iajc(yyR3TT?fRr1L zM)-?5w{uJ}GhFlk=T^(JqUH)U5f*Cgq=rJAAr<7t8KTFlbL5uOtVCGotcPC$=Ccb- zY~n7V1X+9zHWW9VZC_xs^hn2$)`21I17zNz1<#O&u1&1cLgrb>Jgescd_V;dAPe0I z{Kl`RvMgcoktdY=x&FW@?#;BZk`sZx)MvV0rl{ynQ=j8f$Ux(MVv_G zB_fSw%9UNnSSlMQE-r#*Kgdv154O6ppQDsKWQ9y0$gr;b4~5JU=vc-?=Y)2FcnQ2( ziFlcImk7N==v6}J2~i!Qj69LqgEnTr+x^o^6r|)ng9)IG? z0JacMMe_vUsX|W$b>ahPtpVzQ27qd44bYV92S#a^4zC`XrC0j2BD2mQt7?b!Ng&Ub z!2xQltRTCtOsZuS@~XXafb)P0fERcj{jF98yn)QxC~G>i{*;@@tTk{`UNyHvrla~y zw?7uS8E?09xo=&~_?XJ&=}%uj{c-x_@%K+2fA#w>--dINj?`=?NPbw5sA?>dZnl>e z?Tqi&uO`EOKOM-n%uxO2GK<3ca{qrBHBZceL|f3ESiA^}ls^*bUN#&T=qJcp<onyxM|<%~oIQ;%)eg}G|` z_=N4`Q1Lc#FKe$ZUZ)Ff#2eT}&4s(#C`GF6sCs;p@o0VJfCypuMKyBkf?9d{1j_n+ zGo#Y}5^q9-Vo7Adxu@$I{c4s4TOiW^Az<9#=d%sH&hcuA&qk4HGV>qX)|gtsAMRP7 zt+WCRswNZHA$2F~bnd3aYPGwV2_i5r;_*s6{cl`_h0yT|VxBvhE diff --git a/home/admin.py b/home/admin.py index a4e55c1..6154cf6 100644 --- a/home/admin.py +++ b/home/admin.py @@ -22,4 +22,8 @@ class ArticlesLikeAdmin(admin.ModelAdmin): # 分页显示,一页的数量 list_per_page = 10 - actions_on_top = True \ No newline at end of file + actions_on_top = True + +@admin.register(ArticleTag) +class ArticleTagAdmin(admin.ModelAdmin): + list_display = ('id', 'tag') \ No newline at end of file diff --git a/home/migrations/0007_articletag_articles_tag_id.py b/home/migrations/0007_articletag_articles_tag_id.py new file mode 100644 index 0000000..e307afc --- /dev/null +++ b/home/migrations/0007_articletag_articles_tag_id.py @@ -0,0 +1,31 @@ +# Generated by Django 4.2.23 on 2025-06-24 01:37 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('home', '0006_alter_articles_table_alter_articleslike_table'), + ] + + operations = [ + migrations.CreateModel( + name='ArticleTag', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('tag', models.CharField(max_length=120)), + ], + options={ + 'verbose_name': '标签', + 'verbose_name_plural': '标签管理', + 'db_table': 'ArticleTag', + }, + ), + migrations.AddField( + model_name='articles', + name='tag_id', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='home.articletag', verbose_name='文章标签'), + ), + ] diff --git a/home/migrations/__pycache__/0007_articletag_articles_tag_id.cpython-39.pyc b/home/migrations/__pycache__/0007_articletag_articles_tag_id.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f7671369032adc6501e44e5aba655de9ba92e208 GIT binary patch literal 1047 zcmZ8gJ#W-N5VhAI=ljfsKmj!r2hur80S!WlqJ)AZO_IhETJ7Cze7@}2W^JQfS`evD zqN1V*B|`8M_yzoeZIL*ori&C{_MA&1*4ow1?Ck7&Z^o?ItQj~GGZ_4^4CALZZVnrb zRh(HD7cjsS#>foJ5ebN?Z6d6|er|vT_FDsNZVsI{R^R~HH9F22-Z45v)kaY$Sso>E zrrc2iTx2_aeRgxy(OAWqrMPe-Fu@22n4uY1+#X^^u(&&{fDI0~6LLVHg0=@9R43*E z2?^Aoj!}(|7BnaNP8C|PfH5_^WApm3F?5H`VGG)@2)8Bqm=6jUUB6CGreD7ojjQeS+o$RKcO6SLUUS(? zGEQTL7?*BZG!=zpLV3_D;b6Eu3v&-5E+A8tBrWUU%?T+NQP2pE7c}SYr5ki7820~o`I8#=u*z?>77nnd35HcRMjZO zumXjoszK?if(Z>%TfkEu1CRR=&m_?a>g$rToNw#A5}VXe)wLo|HZ>zvT^}%6ZoM^t za#!0-B#*-Q1?ug>ki}u52=q`F4Hx@RdAl2XbZ38SOVyH;UpD7wLq5dxv*rAyzmJv5 z{9sV9_;|(d3k?FRbryLVy#p55rUs#@~tLT{!{DahR`XSe*n gx^t%Tfo7y%yXIEz9-&WpPs=(y)4FCltZjPMKl3j_lmGw# literal 0 HcmV?d00001 diff --git a/home/models.py b/home/models.py index c0397c2..f996b00 100644 --- a/home/models.py +++ b/home/models.py @@ -2,15 +2,25 @@ from django.db import models # Create your models here. +class ArticleTag(models.Model): + id = models.AutoField(primary_key=True) + tag = models.CharField(max_length=120) + def __str__(self): + return self.tag + class Meta: + verbose_name = "标签" + verbose_name_plural = "标签管理" + db_table = 'ArticleTag' + class Articles(models.Model): title = models.CharField(max_length=100,verbose_name="文章标题") content = models.TextField(verbose_name="文章内容") abstract = models.TextField(verbose_name="文章摘要") author = models.TextField(default="admin", verbose_name="文章作者") - # created = models.DateTimeField(auto_now_add=True,verbose_name="发布时间") created = models.DateTimeField(verbose_name="发布时间") stat = models.IntegerField(default=0,verbose_name="点赞数量") read = models.IntegerField(default=0,verbose_name="阅读数量") + tag_id = models.ForeignKey(ArticleTag, on_delete=models.SET_NULL, null=True, blank=True, verbose_name="文章标签") class Meta: diff --git a/home/templates/bottom.html b/home/templates/bottom.html index ad2dd68..e7b8795 100644 --- a/home/templates/bottom.html +++ b/home/templates/bottom.html @@ -19,11 +19,9 @@