From 23cd77f68cc633c830b07a65195cf1e0740a95ea Mon Sep 17 00:00:00 2001 From: SunFree <7934952@qq.com> Date: Sun, 28 Apr 2024 17:04:16 +0800 Subject: [PATCH] new --- __pycache__/main.cpython-310.pyc | Bin 2360 -> 2725 bytes internal/__pycache__/database.cpython-310.pyc | Bin 781 -> 784 bytes internal/__pycache__/models.cpython-310.pyc | Bin 1401 -> 2284 bytes internal/database.py | 2 +- internal/models.py | 32 +++++++++++++++++- main.py | 12 ++++++- routers/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 124 bytes .../__pycache__/typemanage.cpython-310.pyc | Bin 0 -> 654 bytes .../__pycache__/usermanage.cpython-310.pyc | Bin 0 -> 1226 bytes routers/__pycache__/users.cpython-310.pyc | Bin 0 -> 1221 bytes routers/typemanage.py | 13 +++++++ routers/usermanage.py | 30 ++++++++++++++++ 12 files changed, 86 insertions(+), 3 deletions(-) create mode 100644 routers/__pycache__/__init__.cpython-310.pyc create mode 100644 routers/__pycache__/typemanage.cpython-310.pyc create mode 100644 routers/__pycache__/usermanage.cpython-310.pyc create mode 100644 routers/__pycache__/users.cpython-310.pyc create mode 100644 routers/typemanage.py create mode 100644 routers/usermanage.py diff --git a/__pycache__/main.cpython-310.pyc b/__pycache__/main.cpython-310.pyc index 827145611acfbf7a7c0091719274b19d0774643c..ec9946137547ca08b192a4295b9c2650202956bb 100644 GIT binary patch delta 963 zcmZuuO;giQ6wOW3H1vypQ%Y&eheG9}x>H9TltEY^jslyEGc|HwW0{2NOX>*1;7rjS z3noi9x^ThH8C|e({0(lqaqU0QjpKbmK^>FH$;o}^oOg5IQR;0r-ipP-5?x1$>4qIS zh!f4$^qjIcCI_DdoM zNAb*_L@ku@?6OoH`%2UBF2j@Qs@x5?9mZ{A!!TJl>~20{$Gi$%?S|Dd7n_btToLd0 z?_gerl=m%A(FzoCDDkpaQO-loyQ7SxhN!d^u5o6Pmhl=dc`ua@YKF=@>&*l|LecvX zT!5}Oua2yiM0uD%kFlp@Xl|Hw(Fz|GwPu`uv1jT^}9z+q*!|;+zE&P6s71!ZQ3v(V6 zs>gxj{R4XNu$!Qu7Z2Y33x-#(9tCgylA)XC!I$^Gzt8vkUfu?ud~e%z%Nl<_Zil1q z_P!T`xqo)^8JTk}@yL6)NG_IAKnrawrvfYJu)2E&XgsZ=M-^P$6J*S_5nz=Tutt@U zjy~337;{K!W$ zvM-zJr~bjLvMp=so$(nWH8F2OqCT44d(GTlVM$!t;lOy34rUoi*~vX;JmLLx@OVb@ zNn+=N0S>1_*~(*u#JoFn|J+t&d#Ybrg|50=x_&ul4nX$)^8bW}SOl`c7F}c_(^`7qUxGe4>pczPslTTy0gBlF4!;CH#>&5`emQH)n)f^A*HEY%PVr| l#Ji8*VO`nU#@Qpf3QS~|SRBoP2rO`TnV<{xwA>Rh{09C}hOqzu diff --git a/internal/__pycache__/database.cpython-310.pyc b/internal/__pycache__/database.cpython-310.pyc index 34b51f414d4b2b6ecf0685b5836f0e4fc01e8dc6..c61ba96fa0ff452463856866ca6aac6c5b64a1be 100644 GIT binary patch delta 155 zcmeBWo504K&&$ij00dsVdTH|}^44-ju_xu^rzaLn;j@q1R*BtGrBPHOfF&U z0g{YNp2~bcxmzsB`FVLoydWl9QEG8%P6<>wNF(>;TqYwPQ6N*3$i} VkbOlwAOa+Xq#kS$_vFV+S^!4%9{T_Q delta 152 zcmbQh*2~75&&$ij00i?sil)t;$Xm;Hi=`yBxMbqwDcl@D;UWkz*@)4Fk#}-AV-JvI zVe(Yw2g==INzTv9E8+t&*@{w&OLIz~%0U`=CKoUn@rVJLnoNFfnrua!lh-jx%5#I{ SctHe63Q0ZKBA&_5n6vrytG;^6r!-8Ys}IPMQrS|1UVL1_Lp5QHPV%{jczJAy9os0((&5p|LE6Sm|?y2Nv@ zazrH36^=-hpHAp9=rU12SD3DVu976^Nv5lyr$`#~G*w}K67&qof}Ume6zFZF9rSjZ z0(+X|-sH57P1q5q31M>B^ywQVLhVp`#iBOR_%J!-x~0GjC@Ly}PGC8-h#sv^0+c~$ z{&5hL(|N+_!g-D+s7UyM_+J>{NCMs`hSIsxJJby`X0b?p-w2qNVt+<3S*8U|3RS~! zO@|srm@*8fL@GA+GlubQ#k99A2|w_{cEd2^Jz6E#H;g6DYlBTN@%QnU&y0-PrE$Y7 zTO*bmP|r2(5m=7eeqVXglVPTW`^HX+Q~33{5PJo2hAw((>433B35@C`B zch(HdLa0`Je4|4(*-L_>hm3e>6rCtCD6%M;TaJ6}IMx9Iy&fVvDK5vek$qcJ!8!=d z_dx7y4bL7n#uH(jCkf=JDvk-qI4To4&Ini)umM3xP1BlbTG2C$#8ea8o;e7!LszH@ zt8_yD2!z}fisvEB3LatOv)lE#Uv$YNj^$1zFZ8{Cswdz7VRz*S7^AC~H)<=Vdh`8_ zg)7nWeB-BEO8`S)1vU*;deL;sHuXcLYzCO9Fiogm^sI6KiDlg}2P!si9uIzxPF>_wAE|yVVmTeY*#=lid}Bb@QWIqjqQW>q{HAF4xz-+qi$X zzWhTp_f`Gd*=Tk~6TK&4QkZhgi-t|z@nFJx3I@DmI4V)cv}_h;es7q02y=bq$2d$a z!Io)pO^#J;n-P8v%F6Q1QJa#2mfVX8ras05ODtvuw;hV3rILLhHeFywru^qYq&S%u zcoCYww>^^OxYycm+sa8E`s@P>-#7@(%Ygv0RZR11?%Cl&*gj$U6OV4kmLF8GD5L5^RQo=3i_;uwHT}S@~ DE?6?e delta 510 zcmZ{fze@u#6vy*S?k>IFovHnW&{_mh4jlv+5fMbRlP+#9){;|))`L``yT!@n$e-fs z;D6xW!P&t@oZNh`r5#EQ(lGQHuIRLKo$)NHK`YyAoHUu{S`3&L z2|V%(2iegsvO8iI+0znPj@U!aX&>27JoHPQKWA}}y{_ALShgNKxgmaHLTh2I>|jZ| z=c4#bLIB3GZ=z;DVeeRyF-JndOo1d%5|E7BOsj}0g+dR01d7iT7-d^t-3}IBAhx?a zhJtPLezlC(L%(~~zw9J;H}|)uf(NE*zxj5a?k2n?>PIsvsPi}lr)m_XhSgBC)3h@; zRnb0+9Vp^lby&0?Vy!vTvoY=Y?_?`zStZ*N3DH@cv#H!Tq?t`|ayl=-Q0{kA{m@Ac R0Bt?`L$Lr9S3-$W=?^HVQ!xMl diff --git a/internal/database.py b/internal/database.py index 298451e..81983df 100644 --- a/internal/database.py +++ b/internal/database.py @@ -4,7 +4,7 @@ DB_CONFIG = { "host": "111.229.38.129", "user": "root", "password": "zl981023", - "database": "test", + "database": "blogapi", "charset": "utf8mb4", "cursorclass": pymysql.cursors.DictCursor, } diff --git a/internal/models.py b/internal/models.py index f9a90bb..860aed4 100644 --- a/internal/models.py +++ b/internal/models.py @@ -1,6 +1,6 @@ from pydantic import BaseModel,Field from typing import Annotated - +from datetime import datetime # Token相关的模型 class Token(BaseModel): access_token: str @@ -32,3 +32,33 @@ class User(BaseModel): class UserInDB(User): hashed_password: str = None + +class BlogList(BaseModel): + blogname:Annotated[str,Field( + title="博客名", + examples=['blogname'], + pattern=r'^.{2,50}$', + description="允许2-50个字符" + )] + blogtype:Annotated[str,Field( + title="博客类型", + examples=['blogtype'], + description="博客类型允许为空" + )] + addtime:Annotated[datetime,Field( + title="发布时间", + description="数据库中提供了默认值" + )] + descr:Annotated[str,Field( + title="备注", + examples=['descr'], + description="备注允许为空" + )] + +class BlogAdd(BlogList): + blogcontent:Annotated[str,Field( + title="博客内容", + examples=['blogcontent'], + pattern=r'^.{2,}$', + description="不能为空,允许2个或更多字符" + )] \ No newline at end of file diff --git a/main.py b/main.py index f634ae6..8ae1d12 100644 --- a/main.py +++ b/main.py @@ -4,8 +4,12 @@ from fastapi import Depends, FastAPI, HTTPException, status from dependencies import * from internal.models import Token from fastapi.middleware.cors import CORSMiddleware +from routers import usermanage,typemanage +from internal.models import BlogList +from typing import List app=FastAPI() - +# app.include_router(usermanage.router) +# app.include_router(typemanage.router) app.add_middleware( CORSMiddleware, allow_origins=['http://localhost:5173'], # 允许的源 @@ -57,3 +61,9 @@ async def read_users_me(current_user: User = Depends(get_current_active_user)): @app.get("/users/me/items/") async def read_own_items(current_user: User = Depends(get_current_active_user)): return [{"item_id": "Foo", "owner": current_user.username}] + +@app.get("/list",response_model=List[BlogList]) +def read_type_all(): + typelist="SELECT blogname,blogtype,addtime,descr FROM blogs" + result=execute_query(typelist,fetchall=True) + return result \ No newline at end of file diff --git a/routers/__pycache__/__init__.cpython-310.pyc b/routers/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8cb2262f3f95cc1c9127245a7b31a4a774289aa4 GIT binary patch literal 124 zcmd1j<>g`kf_WcB(?IlN5P=LBfgA@QE@lA|DGb33nv8xc8Hzx{2;!H#t5r-=PJViP tVnJq1QGRJjYEf}ae0*kJW=VX!UP0w84x8Nkl+v73JCMd=CLqDW008R#843UZ literal 0 HcmV?d00001 diff --git a/routers/__pycache__/typemanage.cpython-310.pyc b/routers/__pycache__/typemanage.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6e1f47de7d3955173786ba623fbb7e9201c9630f GIT binary patch literal 654 zcmYjPOKTKC5bo-E?qfEK7q9DaB&>K95jCzL#3)I;3=2bNx^@|vnVodcNH)Y%BzOt< z7d(0qJbCb+G~^Uy@h^A~t49y1rmMTEtG;^mDvJ7y=qj2nz5`>|R=7z%36E*(BVv+C zC|C&zlsw^JWnMUk_H+uj^b)W16CW6Ybfvch>0k0Bz~F5t1MJE0k|Rg&92OvZB=@nu zaOFS_KaegN$moE@qhAz<#oY9syneC2Y8zB0c!o7rQpaH6E-#fj3Fx#E&98Qjk z)v^*LZrh7R+ZIwbIVmLSOiiBezk1mjQE|%lI(C#Dh#C+xq4lu2ePJph#qT?_2Xl** ziaMXGt~+{ejY?68B~I(Li4+Q%T3srNqDNlZ;<`Kp7t|JA_u`=m7D6`!qHHC~mSnc_ zike-CV%in2%}{o2$12NFE6*BQB;)@JY#bVc37=9ryOg4F-_QuU09~#(*vNW?4+*v{ Y@Dcqorf(4&vk=C>X}RG48F~}=3pOV literal 0 HcmV?d00001 diff --git a/routers/__pycache__/usermanage.cpython-310.pyc b/routers/__pycache__/usermanage.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..280641135b739250f39c457552c05634b7afbdf1 GIT binary patch literal 1226 zcmZWpTWcgm6z;0-sqUHdT(a(Z1&OS?FoL5iJ}n}~>?|8(Cm}N-(gd1L*O_d`zHL=C zn}iuqBjU?|4?g-L_@FPo`UCtI^(q+r3xXR@brKn|hC0<%r|Q&qzVp=-?RLw;Hg6B6 zbH}oNHj0Nm}>kgj5{h1rMnHP9j zGicU(8fj}{Vz6{2^8>$LbJKR#2|C0A!ad$RB)qktK^MA5J-z}y_ZJlCnKdQ64G!;s zKXrJQ_r7YJkzkdtj;;QUKM|?br@Fbmy}46V3WRnaKnXdQeWG94TCdcT_qHP`pA~}d zz|#t(dRT}IolTWwz#&yp-w`&3(eA@YDh#CCk0z7t;c*P5N{U=FsUlUGfaEPSjY;tt z5DStQ_;y;DgLvhp$5`FB74@y)O2zx;6i?bnEpl>(;8v368+C~>2@ z4k196MJ^%C3dEwDQv?_CNJW|nP?gAIVp6{% zDqA^64Nf@ac0#zbu)idVDVH}EWKNaG*^C^Kgv=;+7j$mVY{UNd6!~n8PG8^5<3b3C z)tbpBk1|**#9Dd9;c0JgZ|`kGE95GPBL$j$44A#>+j`}as4&J{G~=M6B-QQ{h&a-M zgt=LgV~wP?Wp#k8ICY|JI4%?9A*_p`*}-Kvs{JUALCUZuOSkGFR3|0$n|d``f)E;{ z+PlW9y=%0>MUI4rM&B|u4c~wFUbs72-<>?#+Sv?-4}@V;zqY=yF&vM>$<`;sQ8@e* zwKNPLZ;o~+!?AuL7JzAn%V1D3U31VeR|YqiUEx(W;#J)6vn6ih@Yfr|`}+rJaTrEr zvM*|#%6)S-i}L6Y2IYx<5#321V*USfletEkQ1tVT;}A+rXN3LTYEaT5?4o6hJLn$u zZ)kUl`o$Xr#f3{r_pX)(65>iE>O>d`X%C49qyIX8VIKYxRX(p@5ae-!wdy80KC3)R z2em|{Fn=QYrR%`izxp4bZlqW-UUr$IcFIDk8eh%Bl6kX+@d1XcQuxqlT;4^~vwUKH XFB7jGX`L~9?lXrv7dX41wDNWcrs!j7x>v@FZU>?|8(Cm}N-(gd1L*O_d`zFAex zCSd|QueoVE>jWKQ0pT8R?i1dc)1V98gC1W3pZjwP^wgRX-Uf$v zz@Iw2%X?ooPD!xLm&aEB+MgJy)u+0-y1BkpR0@Q4A3+H@mwlpN*;uXAv-dY6DW4aD zZ^5S(NcFf789JLP$$&$uqP`<+gwgKfNGb%zJJtiV`wbBe)*JW`Qn0#qgPn3xnV8&=I~VE+xf9HIG~C~IaN5bX4no{$-l zHiQizrElEdTP&d$yqLo4Jei6aG?eF&Jn=-Ybff~YXYTr}gLq9oPsGl)3S zf`qwQl4Fgewq>=4tT=U|Z8$6wBcis_nzj=3_pvFHjfvk|Z2hMz3)CJukSKD@WPmlpeB zR3^Kk)~VbzXXT(g(zno)_-5 zl*0Uf=$Ed5vwx*OK*>n4WW4MmJ?)f*RCRnc1qX3_QGclb Token: + user = authenticate_user(form_data.username, form_data.password) + if not user: + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail="Incorrect username or password", + headers={"WWW-Authenticate": "Bearer"}, + ) + access_token_expires = timedelta(minutes=ACCESS_TOKEN_EXPIRE_MINUTES) + access_token = create_access_token( + data={"sub": user.username}, expires_delta=access_token_expires + ) + return {"access_token": access_token, "token_type": "bearer"} \ No newline at end of file