From a5d55d1f6b0e6eaf85e4f0036ff961a14de48462 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A2=E8=8B=B1=E8=B1=AA?= <1029214205@qq.com> Date: Sun, 2 Jun 2024 23:54:46 +0800 Subject: [PATCH] first commit --- .../__pycache__/settings.cpython-312.pyc | Bin 3004 -> 3017 bytes DjangoBlogs/DjangoBlogs/settings.py | 6 ++-- .../auth1/__pycache__/admin.cpython-312.pyc | Bin 183 -> 183 bytes DjangoBlogs/auth1/admin.py | 3 +- .../blog/__pycache__/admin.cpython-312.pyc | Bin 182 -> 1205 bytes .../blog/__pycache__/forms.cpython-312.pyc | Bin 0 -> 640 bytes .../blog/__pycache__/models.cpython-312.pyc | Bin 1985 -> 2948 bytes .../blog/__pycache__/views.cpython-312.pyc | Bin 819 -> 2023 bytes DjangoBlogs/blog/admin.py | 20 +++++++++++++- DjangoBlogs/blog/forms.py | 6 ++++ DjangoBlogs/blog/models.py | 26 +++++++++++++++++- DjangoBlogs/blog/views.py | 19 ++++++++++++- DjangoBlogs/templates/pub_blog.html | 7 ++--- 13 files changed, 75 insertions(+), 12 deletions(-) create mode 100644 DjangoBlogs/blog/__pycache__/forms.cpython-312.pyc create mode 100644 DjangoBlogs/blog/forms.py diff --git a/DjangoBlogs/DjangoBlogs/__pycache__/settings.cpython-312.pyc b/DjangoBlogs/DjangoBlogs/__pycache__/settings.cpython-312.pyc index 6ea2a4e9c21bd18359af7d6accfe540dd7b9607e..41d90331c330dce4fd31cbcd32806cf79aa39b59 100644 GIT binary patch delta 149 zcmdlZeo~zGG%qg~0}xDch)E0D$jioPEgdD2A`>N=%9bKq#m&Hw&KM<@A{Ql|A|EA@ z!V)E!q7WsOq8KHeq7)^Qq8ud)q~%gnqU0-8HPtrzF_yDQuvca1W+dhnSMfR)XC~?g x1KH^riJ5MjFR*trF`7<};rb&W)xi6JN4kOY0XKgG#{*8j$r;=MEXF{0008?jCwBk< delta 136 zcmX>pzDJz*G%qg~0}w<%4@-01$jioP%@QS&A{`}~%9bKi#m&Hw&KM<@A{!;1A{Ql* z!V)E!A|EA{q7WsWq8KHUq7)?yq~%hSqvR`9G*vhIF_yD&v!>?hmKNV)4h?bMe3!kO liP3CwCf6SUi3Z*WJc13J54iaoI395FPA=sRU@-w&4FD2~BNqSw diff --git a/DjangoBlogs/DjangoBlogs/settings.py b/DjangoBlogs/DjangoBlogs/settings.py index b2b8274..33ab864 100644 --- a/DjangoBlogs/DjangoBlogs/settings.py +++ b/DjangoBlogs/DjangoBlogs/settings.py @@ -111,13 +111,13 @@ AUTH_PASSWORD_VALIDATORS = [ # Internationalization # https://docs.djangoproject.com/en/5.0/topics/i18n/ -LANGUAGE_CODE = 'en-us' +LANGUAGE_CODE = 'zh-hans' -TIME_ZONE = 'UTC' +TIME_ZONE = 'Asia/Shanghai' USE_I18N = True -USE_TZ = True +USE_TZ = False # Static files (CSS, JavaScript, Images) diff --git a/DjangoBlogs/auth1/__pycache__/admin.cpython-312.pyc b/DjangoBlogs/auth1/__pycache__/admin.cpython-312.pyc index 7b3940c6a77e3d77a8de981851fa88c6cddbc7f3..0aca70d09ea8bf226c82149f6006e2c19944ab05 100644 GIT binary patch delta 19 ZcmdnaxSf&vG%qg~0}z}JikZm01^_Xn1uOsn delta 19 ZcmdnaxSf&vG%qg~0}!m<={u2o4FEE$1!MpK diff --git a/DjangoBlogs/auth1/admin.py b/DjangoBlogs/auth1/admin.py index 8c38f3f..d200995 100644 --- a/DjangoBlogs/auth1/admin.py +++ b/DjangoBlogs/auth1/admin.py @@ -1,3 +1,4 @@ from django.contrib import admin -# Register your models here. + +# Register your models here. \ No newline at end of file diff --git a/DjangoBlogs/blog/__pycache__/admin.cpython-312.pyc b/DjangoBlogs/blog/__pycache__/admin.cpython-312.pyc index 8a44019cebe433e9df2d407d6bdfd281c9233bb1..d1f221bc0dc3602a225c4f9c040eaa56d3149c04 100644 GIT binary patch literal 1205 zcmbVL&1(}u6n~T5O*S7bsVSyv53xwwy%aPaL|Q=&h_Qx(wqTOm31&vd4ioMZceVcCAyF~egRVYRFE z%JceOxW~LUZ3gv9+w8PFtmD@kg4d&Ywz?rp3+IR>h2Z1q0M3{1_n+#sDVGUhv6dHI~JCm~~Pa0b{r- z5yS2GQ-X>93UA}?(0r@z@)6jRdzv&Uv%6RW_mABZjLV47_1!!`CuED_`_s*K+znc4 zT8=MT5#C!kHM1KG-xE)Y>!Xg(@Ub#Po8dG(^B&bvE0fEJCdN!$_U%9b#b`@hFlGNh zbER%i7UBh46W+LI{ujY6B|^v#DE)%+0LtSeA*)BqaAk9_vN;BE7^{R-NnaV}OM`p~ zRaJtzoqlgv+!z!$P_=WZ0!e<&>}Q5h7(k)Fd%9LWgQw@9%qc5J+8I3hTlent;p6Y{ HB)Y=i$YJqp delta 145 zcmdnWxs5UDG%qg~0}$BQ`=mJm>Bk@r3@||%p9O%7=?p0hDU3M`xr|Yaj0}}bn#?aj z(wdC7SQArnGxPj3nQrl=WF_XM=j$cs=am#?CKWLQ6-?G((pUY(VUwGmQks)$SHuAn WV+7)25aRW_3@HpLj5!Rsj8Tk?3``8}3@J=43@Oa1 zj9Dx&4G4NQGlU(*T*;!z`Vz#^WW2?imS2=xoQzP$zyQ)Y~ zPj>^l^5qGj+)I!>noPI2auX}!b5irtOEQ4$%sePtld*^ssK8H?^A<;Zd|qO1YJB`H zuK4)e{FKrh5Su4HzOXbg2O?7h3X)r#&KZeCZkee$DYsZlGD~t&Z?Pxm=ar=9mE7X; z%uP&Bg~)LvCzhn9=NDD3WcUo!#_&tc#VRJCGN33wD>bDEE`;J@X2j mKrSfoizR@>2WCb_#=8s>Us#wKl_sc8*P5vHl>x{E>jVJVOOTNO literal 0 HcmV?d00001 diff --git a/DjangoBlogs/blog/__pycache__/models.cpython-312.pyc b/DjangoBlogs/blog/__pycache__/models.cpython-312.pyc index 7663b1d329f1278547313e9c5474d4858efd8a6e..b57dba78c31c2c37feea58151091c1166a906f53 100644 GIT binary patch literal 2948 zcmbtWUuaWT7(X}nrnzZul4`a7X%;fOsZp2xVLBLP;96^87zC?>P`sqQ$J%m}=(#t} z6p_HHOCN^%viLBD>}3t@`~zdujj^#OVJ{5}v|R9EY*G6*Ol8ogec!ohOhTh&JCNV~ z&N<(A&Ue1^{l1gmyxw*KZP&-cXMS}O@+WrI8uWRq%)lp4G@=PQNeD4PK-r-?5@Jjg zh=WjZwyGMF9ONj`#3`alRG8pvSEs6cjzE84OqXpT8?)?xQz zPEDF3^+&1AxH7J=Y$+e=sj8{q^g2vIn)gyseK8dN`HplN7z zPyhSF$1}%SYJ!fM!~GNS+Zfn9UGvISXI#5Bv)fxKYgiY#>n zbIMY1Us3M1RRb^_4a;mBeA#w{9S9h9%iVW2&IZP*t}(P`n-I`|btBZaVt51&C>XB; zz)qg-+@VEJchS>*%a{+AJcHT(r;^~@@sI3q?te-E>=n?aA&xZ`Zik3IkK;xYlu$@y^uas}!F9K)10|*=W^ll zgTa#bWOe{)y|bCtA@HQ(wlGJrRh|NDgw}J88eN?&NiA|(uf0w!X-(ZgxOHe;rF->F zjCop>1*){LZ=k#80mAw?VS&1uw?ZdljOed#uzoPiZ+KgiE_nwOW00SHQrBGdjePvrZ{WWq3c9kU5bC5tBO5JUb z3yOEhUE%gKm zlGGxQ1HXbKpX{CUqM_AKQ=o_&$SdLj5xgJ*CXAN zxv6<2MWR3zMIe8M6p4eF5M>0gVxD@2RXPpgCH_m(7JL~DXMVib-(jXN)MX5Q7 zC8;U#pb!N6u1E%?T?$C}Y4Tz9oE$?4P=!25nF5GV1QALg0_-nkAnO)O63}f$svto% z5P=o|8Xz$c0Sc4icp%ZjF!?8&`s6w;6HZu2XiPrEWmpd~;})xLJ}?3xu?n^XYyhgE zzc_4i^HWN5QtgWLfqEE0CVK*j56p~=jCUDi?lR~-WEZ{6F5bZMg@uvPlW~ICbeoAb pUl>5_FKn!gVT>JS{WhII5fJ-}01J?uAfPr~XQIwm1`r1vK>+Vup9TN` diff --git a/DjangoBlogs/blog/__pycache__/views.cpython-312.pyc b/DjangoBlogs/blog/__pycache__/views.cpython-312.pyc index 4e63bfcac0e36070db712b13ff1d2adef627ed15..f4489001b325ff147ef2d0d715d37c766188a341 100644 GIT binary patch literal 2023 zcmb6ZOKcNIboS#^O_I>BQ zdA}c{(Fg%}_vZBJZ&X5lL&683Jy^d3zgxs4reqOY%19F8vL)L}M)7dPQtdz{;Nhwj zv_qMYhX<^%-IM77JZOfjh^=KbThHirG!ylBVXN1UWnzH$TqT)4GXiJ7OlXg(nR-E9 zlG*_PC$!W?i5b00eBA$Mwp4qK*cxiwl|+!yvPqdC3H>m4$|oqFb;_I~&FDGGIL%tQ z3ss&$#Yv)~44k%ft-Hdg0dY83dV^&R-!Tw@8hYfUy}& z>Fg*WEbVrmSHj0_f>LM`14zHIE=q2XFNH$Mrc#rN(mizveFIDpS8HPgW6*tkt;%y)1-n-2b6ADCRslEe$MU~(dw`Z|P zInGGlDZBK%D*|rOwP=SfyCU3Cs~RdpKWsZ3Li4%VqA7y83QRg%dkB&WR_Tu$pa1#g zgSDHt|GIzw@9(Y{vQYDm376WG^IU-%y&~A&4h$ztgq#_iMJ|+_Wifmg!^UQq6A>=* z?75r;e)POWb7g8~&77MPN`blz`$q)xjKW)lTH%zj0I-apH$?136sxCUoovL;27$?O z1cp6mPgdAZ4%-D1oO%8O9GA)CAPL95xOC;xLgJ^;;7a19R>Ei`j8arHQvG3Zx>+dYbx3=Ot8u1;i zxY39kizChWt8)jIlc`p6q>&tHCC3`cvBg8pms5kS)L0`m)=KSeq;@}uG*fTQ z9a+))ZXCUKw51O<^r1WS!6y&L>ZfSyRH<>QRM&?d>1S64h8C6j-VYnYhnfS2>-yox z8qv3T`{0-{Ao@&i;iWlL%*|I^?&Vu(9X4)mFNIyj3bS~6CI_j-oQc7XBK8X_&ZM#S zX_Mw1mUA7(8SVqIy`$9Lr5jS{Jh(oLDnT1M!s1>7cx7Zb|000J;_dQd6}&Cy)#NVm z-r$w%X?Oz6D;9m5y#`9S*ZFZc9xIY0t&*2l$t$bGSS4?)l6}9BJq@yFl??t9lq3U> p^ph}=lk=5@kLSxxX~)k}tSR+Bku~Xvw5||&3m!Y4s7QM*{{`n-%&q_c delta 445 zcmX|6u}%U(5ZyWMmcx?(78X_n3vwt&XD~6wQX5JOVnV<@0X;agdskRV!3Ria`~eGM z>1WuG&|Rd`gs6=`XXWe$oMb0&-^{#uGfTbD{A)6~K`;(x=T`$DBOGRPOo zdY@D&Gcd##Qq!ZkwO7GJ=S5x652U_|6S4;1ou~Cpa-ItQo^E=$s`G zMe&B`H*0MsGDfs5g_PhQ4cKMh diff --git a/DjangoBlogs/blog/admin.py b/DjangoBlogs/blog/admin.py index 8c38f3f..df3e449 100644 --- a/DjangoBlogs/blog/admin.py +++ b/DjangoBlogs/blog/admin.py @@ -1,3 +1,21 @@ from django.contrib import admin -# Register your models here. +from .models import BlogCategory, Blog, BlogComment + + +class BlogCategoryAdmin(admin.ModelAdmin): + list_display = ['name'] + + +class BlogAdmin(admin.ModelAdmin): + list_display = ('title', 'content', 'pub_time', 'category', 'author') + + +class BlogCommentAdmin(admin.ModelAdmin): + list_display = ('content', 'pub_time', 'author', 'blog') + + +admin.site.register(BlogCategory, BlogCategoryAdmin) +admin.site.register(Blog, BlogAdmin) +admin.site.register(BlogComment, BlogCommentAdmin) + diff --git a/DjangoBlogs/blog/forms.py b/DjangoBlogs/blog/forms.py new file mode 100644 index 0000000..7e7f7ca --- /dev/null +++ b/DjangoBlogs/blog/forms.py @@ -0,0 +1,6 @@ +from django import forms + +class PubBlogForm(forms.form): + title = forms.CharField(max_length=200, min_length=2) + content = forms.CharField(min_length=2) + category = forms.ImageField() \ No newline at end of file diff --git a/DjangoBlogs/blog/models.py b/DjangoBlogs/blog/models.py index fc4a3a2..d72e11a 100644 --- a/DjangoBlogs/blog/models.py +++ b/DjangoBlogs/blog/models.py @@ -6,6 +6,14 @@ User = get_user_model() class BlogCategory(models.Model): name = models.CharField(max_length=200, verbose_name='分类名称') + def __str__(self): + return self.name + + + class Meta: + verbose_name ='分类' + verbose_name_plural = verbose_name + class Blog(models.Model): title = models.CharField(max_length=200, verbose_name='标题') content = models.TextField(verbose_name='内容') @@ -13,11 +21,27 @@ class Blog(models.Model): category = models.ForeignKey(BlogCategory, on_delete=models.CASCADE, verbose_name='分类') author = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name='作者') + def __str__(self): + return self.title + + + class Meta: + verbose_name ='帖子' + verbose_name_plural = verbose_name + + class BlogComment(models.Model): content = models.TextField(verbose_name='内容') pub_time = models.DateTimeField(auto_now_add=True, verbose_name='发布时间') - blog = models.ForeignKey(Blog, on_delete=models.CASCADE, related_name='comments', verbose_name='所属博客') + blog = models.ForeignKey(Blog, on_delete=models.CASCADE, related_name='comments', verbose_name='所属帖子') author = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name='作者') + def __str__(self): + return self.content + + + class Meta: + verbose_name ='评论' + verbose_name_plural = verbose_name diff --git a/DjangoBlogs/blog/views.py b/DjangoBlogs/blog/views.py index 631342e..93bea80 100644 --- a/DjangoBlogs/blog/views.py +++ b/DjangoBlogs/blog/views.py @@ -1,6 +1,11 @@ from django.shortcuts import render +from django.http import JsonResponse from django.urls.base import reverse_lazy from django.contrib.auth.decorators import login_required +from django.views.decorators.http import require_http_methods +from .models import BlogCategory, Blog, BlogComment +from .forms import PubBlogForm + # Create your views here. def index(request): return render(request, 'index.html') @@ -8,6 +13,18 @@ def index(request): def blog_detail(request, blog_id): return render(request,'blog_detail.html') + +@require_http_methods(['GET','POST']) @login_required() def pub_blog(request): - return render(request,'pub_blog.html') \ No newline at end of file + if request.method == 'GET': + categories = BlogCategory.objects.all() + return render(request,'pub_blog.html', context={"categories": categories}) + else: + form = PubBlogForm(request.POST) + if form.is_valid(): + title = form.cleaned_data.get('title') + content = form.cleaned_data.get('content') + category_id = form.cleaned_data.get('category') + Blog.objects.create(title=title, content=content, category_id=category_id, author=request.user) + return JsonResponse({"code":200, "message":"参数错误!"}) \ No newline at end of file diff --git a/DjangoBlogs/templates/pub_blog.html b/DjangoBlogs/templates/pub_blog.html index a1dedee..d82fe02 100644 --- a/DjangoBlogs/templates/pub_blog.html +++ b/DjangoBlogs/templates/pub_blog.html @@ -33,11 +33,8 @@
"