diff --git a/4_blog/.idea/.gitignore b/1_blog/.idea/.gitignore similarity index 100% rename from 4_blog/.idea/.gitignore rename to 1_blog/.idea/.gitignore diff --git a/4_blog/.idea/blog.iml b/1_blog/.idea/blog.iml similarity index 100% rename from 4_blog/.idea/blog.iml rename to 1_blog/.idea/blog.iml diff --git a/4_blog/.idea/misc.xml b/1_blog/.idea/misc.xml similarity index 100% rename from 4_blog/.idea/misc.xml rename to 1_blog/.idea/misc.xml diff --git a/4_blog/.idea/modules.xml b/1_blog/.idea/modules.xml similarity index 100% rename from 4_blog/.idea/modules.xml rename to 1_blog/.idea/modules.xml diff --git a/4_blog/blog/__init__.py b/1_blog/blog/__init__.py similarity index 100% rename from 4_blog/blog/__init__.py rename to 1_blog/blog/__init__.py diff --git a/4_blog/blog/__init__.pyc b/1_blog/blog/__init__.pyc similarity index 100% rename from 4_blog/blog/__init__.pyc rename to 1_blog/blog/__init__.pyc diff --git a/1_blog/blog/__pycache__/__init__.cpython-312.pyc b/1_blog/blog/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000..8d433fb Binary files /dev/null and b/1_blog/blog/__pycache__/__init__.cpython-312.pyc differ diff --git a/1_blog/blog/__pycache__/settings.cpython-312.pyc b/1_blog/blog/__pycache__/settings.cpython-312.pyc new file mode 100644 index 0000000..3eb1162 Binary files /dev/null and b/1_blog/blog/__pycache__/settings.cpython-312.pyc differ diff --git a/1_blog/blog/__pycache__/urls.cpython-312.pyc b/1_blog/blog/__pycache__/urls.cpython-312.pyc new file mode 100644 index 0000000..1227cb9 Binary files /dev/null and b/1_blog/blog/__pycache__/urls.cpython-312.pyc differ diff --git a/1_blog/blog/__pycache__/wsgi.cpython-312.pyc b/1_blog/blog/__pycache__/wsgi.cpython-312.pyc new file mode 100644 index 0000000..fb32c9e Binary files /dev/null and b/1_blog/blog/__pycache__/wsgi.cpython-312.pyc differ diff --git a/4_blog/blog/settings.py b/1_blog/blog/settings.py similarity index 90% rename from 4_blog/blog/settings.py rename to 1_blog/blog/settings.py index 1070fc2..45c2c8f 100644 --- a/4_blog/blog/settings.py +++ b/1_blog/blog/settings.py @@ -39,7 +39,9 @@ INSTALLED_APPS = [ 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', - 'post' + 'post', + 'ckeditor', + 'ckeditor_uploader' ] MIDDLEWARE = [ @@ -66,6 +68,7 @@ TEMPLATES = [ 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', + 'post.mycontextprocessors.getRightInfo', ], }, }, @@ -80,7 +83,7 @@ WSGI_APPLICATION = 'blog.wsgi.application' DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', - 'NAME': '180810db', + 'NAME': 'blog', 'USER': 'root', 'PASSWORD': '123456', 'HOST': '127.0.0.1', @@ -111,15 +114,15 @@ AUTH_PASSWORD_VALIDATORS = [ # Internationalization # https://docs.djangoproject.com/en/1.11/topics/i18n/ -LANGUAGE_CODE = 'zh-Hans' +LANGUAGE_CODE = 'zh-Hans' #简体中文 -TIME_ZONE = 'Asia/Shanghai' +TIME_ZONE = 'Asia/Shanghai' #时区 USE_I18N = True USE_L10N = True -USE_TZ = True +USE_TZ =False # Static files (CSS, JavaScript, Images) @@ -131,4 +134,10 @@ STATICFILES_DIRS = [ os.path.join(BASE_DIR,'static','css') ] -# global_settings + +MEDIA_URL = '/media/' +MEDIA_ROOT = os.path.join(BASE_DIR, 'media') +CKEDITOR_UPLOAD_PATH = 'upload/' + + +# global_settings,去复制 diff --git a/4_blog/blog/settings.pyc b/1_blog/blog/settings.pyc similarity index 63% rename from 4_blog/blog/settings.pyc rename to 1_blog/blog/settings.pyc index 63cef39..27892e3 100644 Binary files a/4_blog/blog/settings.pyc and b/1_blog/blog/settings.pyc differ diff --git a/4_blog/blog/urls.py b/1_blog/blog/urls.py similarity index 56% rename from 4_blog/blog/urls.py rename to 1_blog/blog/urls.py index acf12b5..337540f 100644 --- a/4_blog/blog/urls.py +++ b/1_blog/blog/urls.py @@ -13,10 +13,20 @@ Including another URLconf 1. Import the include() function: from django.conf.urls import url, include 2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls')) """ -from django.conf.urls import url, include +from django.urls import path, include from django.contrib import admin +from django.conf import settings + +from blog.settings import DEBUG, MEDIA_ROOT urlpatterns = [ - url(r'^admin/', admin.site.urls), - url(r'^', include('post.urls')), + path('admin/', admin.site.urls), + path('', include('post.urls')), # 使用path替换了url,对于简单的根路径匹配,不需要正则表达式 + path('ckeditor/', include('ckeditor_uploader.urls')), ] +from django.urls import re_path +from django.views.static import serve +if settings.DEBUG: + urlpatterns += [ + re_path(r'^media/(?P.*)$', serve, {'document_root': settings.MEDIA_ROOT}), + ] \ No newline at end of file diff --git a/4_blog/blog/urls.pyc b/1_blog/blog/urls.pyc similarity index 100% rename from 4_blog/blog/urls.pyc rename to 1_blog/blog/urls.pyc diff --git a/4_blog/blog/wsgi.py b/1_blog/blog/wsgi.py similarity index 100% rename from 4_blog/blog/wsgi.py rename to 1_blog/blog/wsgi.py diff --git a/4_blog/blog/wsgi.pyc b/1_blog/blog/wsgi.pyc similarity index 100% rename from 4_blog/blog/wsgi.pyc rename to 1_blog/blog/wsgi.pyc diff --git a/4_blog/db.sqlite3 b/1_blog/db.sqlite3 similarity index 100% rename from 4_blog/db.sqlite3 rename to 1_blog/db.sqlite3 diff --git a/4_blog/manage.py b/1_blog/manage.py similarity index 100% rename from 4_blog/manage.py rename to 1_blog/manage.py diff --git a/1_blog/media/upload/2024/05/29/image-20240529010212-1.png b/1_blog/media/upload/2024/05/29/image-20240529010212-1.png new file mode 100644 index 0000000..986169a Binary files /dev/null and b/1_blog/media/upload/2024/05/29/image-20240529010212-1.png differ diff --git a/1_blog/media/upload/2024/05/29/image-20240529010212-10.png b/1_blog/media/upload/2024/05/29/image-20240529010212-10.png new file mode 100644 index 0000000..683e919 Binary files /dev/null and b/1_blog/media/upload/2024/05/29/image-20240529010212-10.png differ diff --git a/1_blog/media/upload/2024/05/29/image-20240529010212-11.png b/1_blog/media/upload/2024/05/29/image-20240529010212-11.png new file mode 100644 index 0000000..8a50c10 Binary files /dev/null and b/1_blog/media/upload/2024/05/29/image-20240529010212-11.png differ diff --git a/1_blog/media/upload/2024/05/29/image-20240529010212-12.png b/1_blog/media/upload/2024/05/29/image-20240529010212-12.png new file mode 100644 index 0000000..e24ef4f Binary files /dev/null and b/1_blog/media/upload/2024/05/29/image-20240529010212-12.png differ diff --git a/1_blog/media/upload/2024/05/29/image-20240529010212-13.png b/1_blog/media/upload/2024/05/29/image-20240529010212-13.png new file mode 100644 index 0000000..c7c4dea Binary files /dev/null and b/1_blog/media/upload/2024/05/29/image-20240529010212-13.png differ diff --git a/1_blog/media/upload/2024/05/29/image-20240529010212-14.png b/1_blog/media/upload/2024/05/29/image-20240529010212-14.png new file mode 100644 index 0000000..a3b6210 Binary files /dev/null and b/1_blog/media/upload/2024/05/29/image-20240529010212-14.png differ diff --git a/1_blog/media/upload/2024/05/29/image-20240529010212-15.png b/1_blog/media/upload/2024/05/29/image-20240529010212-15.png new file mode 100644 index 0000000..2d7120b Binary files /dev/null and b/1_blog/media/upload/2024/05/29/image-20240529010212-15.png differ diff --git a/1_blog/media/upload/2024/05/29/image-20240529010212-16.png b/1_blog/media/upload/2024/05/29/image-20240529010212-16.png new file mode 100644 index 0000000..480f2b5 Binary files /dev/null and b/1_blog/media/upload/2024/05/29/image-20240529010212-16.png differ diff --git a/1_blog/media/upload/2024/05/29/image-20240529010212-17.png b/1_blog/media/upload/2024/05/29/image-20240529010212-17.png new file mode 100644 index 0000000..bb01207 Binary files /dev/null and b/1_blog/media/upload/2024/05/29/image-20240529010212-17.png differ diff --git a/1_blog/media/upload/2024/05/29/image-20240529010212-18.png b/1_blog/media/upload/2024/05/29/image-20240529010212-18.png new file mode 100644 index 0000000..0f87a27 Binary files /dev/null and b/1_blog/media/upload/2024/05/29/image-20240529010212-18.png differ diff --git a/1_blog/media/upload/2024/05/29/image-20240529010212-19.png b/1_blog/media/upload/2024/05/29/image-20240529010212-19.png new file mode 100644 index 0000000..b394640 Binary files /dev/null and b/1_blog/media/upload/2024/05/29/image-20240529010212-19.png differ diff --git a/1_blog/media/upload/2024/05/29/image-20240529010212-2.png b/1_blog/media/upload/2024/05/29/image-20240529010212-2.png new file mode 100644 index 0000000..7b0181c Binary files /dev/null and b/1_blog/media/upload/2024/05/29/image-20240529010212-2.png differ diff --git a/1_blog/media/upload/2024/05/29/image-20240529010212-20.png b/1_blog/media/upload/2024/05/29/image-20240529010212-20.png new file mode 100644 index 0000000..47e185e Binary files /dev/null and b/1_blog/media/upload/2024/05/29/image-20240529010212-20.png differ diff --git a/1_blog/media/upload/2024/05/29/image-20240529010212-3.png b/1_blog/media/upload/2024/05/29/image-20240529010212-3.png new file mode 100644 index 0000000..b85f5ee Binary files /dev/null and b/1_blog/media/upload/2024/05/29/image-20240529010212-3.png differ diff --git a/1_blog/media/upload/2024/05/29/image-20240529010212-4.png b/1_blog/media/upload/2024/05/29/image-20240529010212-4.png new file mode 100644 index 0000000..84715b9 Binary files /dev/null and b/1_blog/media/upload/2024/05/29/image-20240529010212-4.png differ diff --git a/1_blog/media/upload/2024/05/29/image-20240529010212-5.png b/1_blog/media/upload/2024/05/29/image-20240529010212-5.png new file mode 100644 index 0000000..4a6ea05 Binary files /dev/null and b/1_blog/media/upload/2024/05/29/image-20240529010212-5.png differ diff --git a/1_blog/media/upload/2024/05/29/image-20240529010212-6.png b/1_blog/media/upload/2024/05/29/image-20240529010212-6.png new file mode 100644 index 0000000..76877c7 Binary files /dev/null and b/1_blog/media/upload/2024/05/29/image-20240529010212-6.png differ diff --git a/1_blog/media/upload/2024/05/29/image-20240529010212-7.png b/1_blog/media/upload/2024/05/29/image-20240529010212-7.png new file mode 100644 index 0000000..3441238 Binary files /dev/null and b/1_blog/media/upload/2024/05/29/image-20240529010212-7.png differ diff --git a/1_blog/media/upload/2024/05/29/image-20240529010212-8.png b/1_blog/media/upload/2024/05/29/image-20240529010212-8.png new file mode 100644 index 0000000..1518918 Binary files /dev/null and b/1_blog/media/upload/2024/05/29/image-20240529010212-8.png differ diff --git a/1_blog/media/upload/2024/05/29/image-20240529010212-9.png b/1_blog/media/upload/2024/05/29/image-20240529010212-9.png new file mode 100644 index 0000000..0cfb86a Binary files /dev/null and b/1_blog/media/upload/2024/05/29/image-20240529010212-9.png differ diff --git a/1_blog/media/upload/2024/05/29/lp1rbr7y19w3sh0o3v1.png b/1_blog/media/upload/2024/05/29/lp1rbr7y19w3sh0o3v1.png new file mode 100644 index 0000000..961ddfd Binary files /dev/null and b/1_blog/media/upload/2024/05/29/lp1rbr7y19w3sh0o3v1.png differ diff --git a/1_blog/media/upload/2024/05/29/qq20220701225251.psd b/1_blog/media/upload/2024/05/29/qq20220701225251.psd new file mode 100644 index 0000000..97f943a Binary files /dev/null and b/1_blog/media/upload/2024/05/29/qq20220701225251.psd differ diff --git a/1_blog/media/upload/2024/05/29/qq20220701225305.png b/1_blog/media/upload/2024/05/29/qq20220701225305.png new file mode 100644 index 0000000..046017f Binary files /dev/null and b/1_blog/media/upload/2024/05/29/qq20220701225305.png differ diff --git a/1_blog/media/upload/2024/05/29/r-c.jfif b/1_blog/media/upload/2024/05/29/r-c.jfif new file mode 100644 index 0000000..c4e8399 Binary files /dev/null and b/1_blog/media/upload/2024/05/29/r-c.jfif differ diff --git a/4_blog/post/__init__.py b/1_blog/post/__init__.py similarity index 76% rename from 4_blog/post/__init__.py rename to 1_blog/post/__init__.py index e10a4d0..4cace2f 100644 --- a/4_blog/post/__init__.py +++ b/1_blog/post/__init__.py @@ -3,7 +3,7 @@ from django.apps import AppConfig import os -default_app_config = 'post.PrimaryBlogConfig' +default_app_config = 'post.apps.PostConfig' VERBOSE_APP_NAME = u"博客管理" diff --git a/1_blog/post/__init__.pyc b/1_blog/post/__init__.pyc new file mode 100644 index 0000000..2593421 Binary files /dev/null and b/1_blog/post/__init__.pyc differ diff --git a/1_blog/post/__pycache__/__init__.cpython-312.pyc b/1_blog/post/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000..34a0390 Binary files /dev/null and b/1_blog/post/__pycache__/__init__.cpython-312.pyc differ diff --git a/1_blog/post/__pycache__/admin.cpython-312.pyc b/1_blog/post/__pycache__/admin.cpython-312.pyc new file mode 100644 index 0000000..0e4c41e Binary files /dev/null and b/1_blog/post/__pycache__/admin.cpython-312.pyc differ diff --git a/1_blog/post/__pycache__/apps.cpython-312.pyc b/1_blog/post/__pycache__/apps.cpython-312.pyc new file mode 100644 index 0000000..5651891 Binary files /dev/null and b/1_blog/post/__pycache__/apps.cpython-312.pyc differ diff --git a/1_blog/post/__pycache__/models.cpython-312.pyc b/1_blog/post/__pycache__/models.cpython-312.pyc new file mode 100644 index 0000000..4127081 Binary files /dev/null and b/1_blog/post/__pycache__/models.cpython-312.pyc differ diff --git a/1_blog/post/__pycache__/mycontextprocessors.cpython-312.pyc b/1_blog/post/__pycache__/mycontextprocessors.cpython-312.pyc new file mode 100644 index 0000000..2dadb0f Binary files /dev/null and b/1_blog/post/__pycache__/mycontextprocessors.cpython-312.pyc differ diff --git a/1_blog/post/__pycache__/urls.cpython-312.pyc b/1_blog/post/__pycache__/urls.cpython-312.pyc new file mode 100644 index 0000000..00481a2 Binary files /dev/null and b/1_blog/post/__pycache__/urls.cpython-312.pyc differ diff --git a/1_blog/post/__pycache__/views.cpython-312.pyc b/1_blog/post/__pycache__/views.cpython-312.pyc new file mode 100644 index 0000000..450900d Binary files /dev/null and b/1_blog/post/__pycache__/views.cpython-312.pyc differ diff --git a/4_blog/post/admin.py b/1_blog/post/admin.py similarity index 87% rename from 4_blog/post/admin.py rename to 1_blog/post/admin.py index cc86658..091cfeb 100644 --- a/4_blog/post/admin.py +++ b/1_blog/post/admin.py @@ -8,6 +8,7 @@ from .models import * class PostModelAdmin(admin.ModelAdmin): list_display = ('title','created') + admin.site.register(Category) admin.site.register(Tag) admin.site.register(Post,PostModelAdmin) \ No newline at end of file diff --git a/1_blog/post/admin.pyc b/1_blog/post/admin.pyc new file mode 100644 index 0000000..52e9401 Binary files /dev/null and b/1_blog/post/admin.pyc differ diff --git a/4_blog/post/apps.py b/1_blog/post/apps.py similarity index 72% rename from 4_blog/post/apps.py rename to 1_blog/post/apps.py index 75d673e..469c34e 100644 --- a/4_blog/post/apps.py +++ b/1_blog/post/apps.py @@ -5,4 +5,5 @@ from django.apps import AppConfig class PostConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' name = 'post' diff --git a/4_blog/post/migrations/0001_initial.py b/1_blog/post/migrations/0001_initial.py similarity index 79% rename from 4_blog/post/migrations/0001_initial.py rename to 1_blog/post/migrations/0001_initial.py index 8af59b5..813a766 100644 --- a/4_blog/post/migrations/0001_initial.py +++ b/1_blog/post/migrations/0001_initial.py @@ -1,9 +1,7 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.6 on 2018-08-10 07:51 -from __future__ import unicode_literals +# Generated by Django 5.0.6 on 2024-05-28 10:01 -from django.db import migrations, models import django.db.models.deletion +from django.db import migrations, models class Migration(migrations.Migration): @@ -18,39 +16,38 @@ class Migration(migrations.Migration): name='Category', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('cname', models.CharField(max_length=30, unique=True)), + ('cname', models.CharField(max_length=30, unique=True, verbose_name='类别名称')), ], options={ + 'verbose_name_plural': '类别', 'db_table': 't_category', }, ), migrations.CreateModel( - name='Post', + name='Tag', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('title', models.CharField(max_length=100, unique=True)), - ('desc', models.CharField(max_length=100)), - ('content', models.TextField()), - ('created', models.DateTimeField(auto_now_add=True)), - ('category', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='post.Category')), + ('tname', models.CharField(max_length=30, unique=True, verbose_name='标签名称')), ], options={ - 'db_table': 't_post', + 'verbose_name_plural': '标签', + 'db_table': 't_tag', }, ), migrations.CreateModel( - name='Tag', + name='Post', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('tname', models.CharField(max_length=30, unique=True)), + ('title', models.CharField(max_length=100, unique=True)), + ('desc', models.CharField(max_length=100)), + ('content', models.TextField()), + ('created', models.DateTimeField(auto_now_add=True)), + ('category', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='post.category')), + ('tag', models.ManyToManyField(to='post.tag')), ], options={ - 'db_table': 't_tag', + 'verbose_name_plural': '帖子', + 'db_table': 't_post', }, ), - migrations.AddField( - model_name='post', - name='tag', - field=models.ManyToManyField(to='post.Tag'), - ), ] diff --git a/1_blog/post/migrations/0002_alter_category_id_alter_post_content_alter_post_id_and_more.py b/1_blog/post/migrations/0002_alter_category_id_alter_post_content_alter_post_id_and_more.py new file mode 100644 index 0000000..e6040fe --- /dev/null +++ b/1_blog/post/migrations/0002_alter_category_id_alter_post_content_alter_post_id_and_more.py @@ -0,0 +1,34 @@ +# Generated by Django 5.0.6 on 2024-05-28 16:55 + +import ckeditor_uploader.fields +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('post', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='category', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), + ), + migrations.AlterField( + model_name='post', + name='content', + field=ckeditor_uploader.fields.RichTextUploadingField(blank=True, null=True), + ), + migrations.AlterField( + model_name='post', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), + ), + migrations.AlterField( + model_name='tag', + name='id', + field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), + ), + ] diff --git a/4_blog/post/migrations/__init__.py b/1_blog/post/migrations/__init__.py similarity index 100% rename from 4_blog/post/migrations/__init__.py rename to 1_blog/post/migrations/__init__.py diff --git a/4_blog/post/migrations/__init__.pyc b/1_blog/post/migrations/__init__.pyc similarity index 100% rename from 4_blog/post/migrations/__init__.pyc rename to 1_blog/post/migrations/__init__.pyc diff --git a/1_blog/post/migrations/__pycache__/0001_initial.cpython-312.pyc b/1_blog/post/migrations/__pycache__/0001_initial.cpython-312.pyc new file mode 100644 index 0000000..0cbc1bd Binary files /dev/null and b/1_blog/post/migrations/__pycache__/0001_initial.cpython-312.pyc differ diff --git a/1_blog/post/migrations/__pycache__/0002_alter_category_id_alter_post_content_alter_post_id_and_more.cpython-312.pyc b/1_blog/post/migrations/__pycache__/0002_alter_category_id_alter_post_content_alter_post_id_and_more.cpython-312.pyc new file mode 100644 index 0000000..8fba940 Binary files /dev/null and b/1_blog/post/migrations/__pycache__/0002_alter_category_id_alter_post_content_alter_post_id_and_more.cpython-312.pyc differ diff --git a/1_blog/post/migrations/__pycache__/__init__.cpython-312.pyc b/1_blog/post/migrations/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000..6826da8 Binary files /dev/null and b/1_blog/post/migrations/__pycache__/__init__.cpython-312.pyc differ diff --git a/1_blog/post/models.py b/1_blog/post/models.py new file mode 100644 index 0000000..1d6ed9e --- /dev/null +++ b/1_blog/post/models.py @@ -0,0 +1,66 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models +from ckeditor_uploader.fields import RichTextUploadingField + +# Create your models here. +class Category(models.Model): #类别 + cname = models.CharField(max_length=30,unique=True,verbose_name='类别名称') + + + class Meta: + db_table = 't_category' + verbose_name_plural='类别' + + def __str__(self): + # 首先,检查self.cname是否为None或非字符串类型 + if not isinstance(self.cname, str): + # 这里,您可以选择抛出一个具体的异常,或者返回一个默认值 + # 例如,返回一个空字符串或者一个错误提示 + raise ValueError("cname must be a string") + + # 使用f-string进行字符串格式化 + return f'Category: {self.cname}' + +class Tag(models.Model): #标签 + tname = models.CharField(max_length=30,unique=True,verbose_name='标签名称') + + class Meta: + db_table = 't_tag' + verbose_name_plural = '标签' + + def __str__(self): + # 首先,检查self.cname是否为None或非字符串类型 + if not isinstance(self.tname, str): + # 这里,您可以选择抛出一个具体的异常,或者返回一个默认值 + # 例如,返回一个空字符串或者一个错误提示 + raise ValueError("cname must be a string") + + # 使用f-string进行字符串格式化 + return f'Tag: {self.tname}' + +class Post(models.Model): + title = models.CharField(max_length=100,unique=True) #标题 + desc = models.CharField(max_length=100) #简述 + content = RichTextUploadingField(null=True,blank=True) + created = models.DateTimeField(auto_now_add=True) #发帖时间 + category = models.ForeignKey(Category,on_delete=models.CASCADE) #类别 + tag = models.ManyToManyField(Tag) #标签 + + class Meta: + db_table = 't_post' + verbose_name_plural = '帖子' + + def __str__(self): + # 首先,检查self.cname是否为None或非字符串类型 + if not isinstance(self.title, str): + # 这里,您可以选择抛出一个具体的异常,或者返回一个默认值 + # 例如,返回一个空字符串或者一个错误提示 + raise ValueError("cname must be a string") + + # 使用f-string进行字符串格式化 + return f'Post:{self.title}' + + + diff --git a/1_blog/post/models.pyc b/1_blog/post/models.pyc new file mode 100644 index 0000000..65c7cbb Binary files /dev/null and b/1_blog/post/models.pyc differ diff --git a/1_blog/post/mycontextprocessors.py b/1_blog/post/mycontextprocessors.py new file mode 100644 index 0000000..d4988fb --- /dev/null +++ b/1_blog/post/mycontextprocessors.py @@ -0,0 +1,23 @@ +#coding=utf-8 +from django.db.models import Count + +from post.models import Post + + +def getRightInfo(request): + + #1.获取分类信息 + r_catepost = Post.objects.values('category__cname','category').annotate(c=Count('*')).order_by('-c') + + #2.近期文章 + r_recpost = Post.objects.all().order_by('-created')[:3] + + #3.获取日期归档信息 原生查询 + from django.db import connection + cursor = connection.cursor() + cursor.execute("select created,count('*') c from t_post GROUP BY DATE_FORMAT(created,'%Y-%m') ORDER BY c desc,created desc") + # 获取查询结果 + r_filepost = cursor.fetchall() + + # 返回获取的标签信息以字典的形式 + return {'r_catepost':r_catepost,'r_recpost':r_recpost,'r_filepost':r_filepost} \ No newline at end of file diff --git a/1_blog/post/templates/article.html b/1_blog/post/templates/article.html new file mode 100644 index 0000000..6fd7297 --- /dev/null +++ b/1_blog/post/templates/article.html @@ -0,0 +1,35 @@ +{% extends 'base.html' %} + +{% block title %} + 帖子列表 +{% endblock %} + + +{% block left %} + + +
+ +
+ + {% for post in postList %} + + + + {% endfor %} + +
+
+{% endblock %} \ No newline at end of file diff --git a/4_blog/post/templates/detail.html b/1_blog/post/templates/detail.html similarity index 90% rename from 4_blog/post/templates/detail.html rename to 1_blog/post/templates/detail.html index 31a8fec..15a0fa8 100644 --- a/4_blog/post/templates/detail.html +++ b/1_blog/post/templates/detail.html @@ -1,5 +1,5 @@ {% extends 'base.html' %} -{% load myfilter %} +{% load myfilter %} {% block title %} 详情页面 @@ -27,10 +27,10 @@

前言

{{ post.desc }}
- {{ post.content|md|safe }} + {{ post.content|md|safe }} - +
diff --git a/4_blog/post/templates/index.html b/1_blog/post/templates/index.html similarity index 69% rename from 4_blog/post/templates/index.html rename to 1_blog/post/templates/index.html index 55c1f80..b6f6240 100644 --- a/4_blog/post/templates/index.html +++ b/1_blog/post/templates/index.html @@ -2,16 +2,40 @@ {% block title %}首页{% endblock %} +{% block headerjs %} + + + +{% endblock %} {% block left %}
- {% for post in postList %} {% endfor %} - - -
-{% endblock %} - - - - - - - - - - - - - - - +{% endblock %} \ No newline at end of file diff --git a/4_blog/post/templatetags/__init__.py b/1_blog/post/templatetags/__init__.py similarity index 100% rename from 4_blog/post/templatetags/__init__.py rename to 1_blog/post/templatetags/__init__.py diff --git a/1_blog/post/templatetags/__pycache__/__init__.cpython-312.pyc b/1_blog/post/templatetags/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000..176e8c2 Binary files /dev/null and b/1_blog/post/templatetags/__pycache__/__init__.cpython-312.pyc differ diff --git a/1_blog/post/templatetags/__pycache__/myfilter.cpython-312.pyc b/1_blog/post/templatetags/__pycache__/myfilter.cpython-312.pyc new file mode 100644 index 0000000..e57b9d2 Binary files /dev/null and b/1_blog/post/templatetags/__pycache__/myfilter.cpython-312.pyc differ diff --git a/4_blog/post/templatetags/myfilter.py b/1_blog/post/templatetags/myfilter.py similarity index 100% rename from 4_blog/post/templatetags/myfilter.py rename to 1_blog/post/templatetags/myfilter.py diff --git a/4_blog/post/tests.py b/1_blog/post/tests.py similarity index 100% rename from 4_blog/post/tests.py rename to 1_blog/post/tests.py diff --git a/1_blog/post/urls.py b/1_blog/post/urls.py new file mode 100644 index 0000000..ad55a0f --- /dev/null +++ b/1_blog/post/urls.py @@ -0,0 +1,12 @@ +#coding=utf-8 + +from django.urls import path, re_path +from . import views # 确保从当前目录导入views模块,前面的import语句有误 + +urlpatterns = [ + path('', views.queryAll, name='home'), + re_path(r'^page/(?P\d+)$', views.queryAll, name='pagination'), + re_path(r'^post/(?P\d+)$', views.detail, name='post_detail'), + re_path(r'^category/(?P\d+)$', views.queryPostByCid, name='category_posts'), + re_path(r'^archive/(?P\d+)/(?P\d+)$', views.queryPostByCreated, name='archive'), +] \ No newline at end of file diff --git a/1_blog/post/urls.pyc b/1_blog/post/urls.pyc new file mode 100644 index 0000000..85b8bc3 Binary files /dev/null and b/1_blog/post/urls.pyc differ diff --git a/4_blog/post/views.py b/1_blog/post/views.py similarity index 67% rename from 4_blog/post/views.py rename to 1_blog/post/views.py index 890fecf..8c451c7 100644 --- a/4_blog/post/views.py +++ b/1_blog/post/views.py @@ -2,17 +2,13 @@ from __future__ import unicode_literals from django.shortcuts import render - # Create your views here. #渲染主页面 -# from post.models import Post -from templates.models import Post - +from post.models import Post from django.core.paginator import Paginator import math def queryAll(request,num=1): - num = int(num) #获取所有帖子信息 @@ -53,4 +49,17 @@ def detail(request,postid): #根据postid查询帖子的详情信息 post = Post.objects.get(id=postid) - return render(request,'detail.html',{'post':post}) \ No newline at end of file + return render(request,'detail.html',{'post':post}) +#根据类别id查询所有帖子 +def queryPostByCid(request,cid): + + postList = Post.objects.filter(category_id=cid) + # Post.objects.filter(category__id=cid) + + return render(request,'article.html',{'postList':postList}) + +#根据发帖时间查询所有帖子 +def queryPostByCreated(request,year,month): + + postList = Post.objects.filter(created__year=year,created__month=month) + return render(request,'article.html',{'postList':postList}) \ No newline at end of file diff --git a/1_blog/post/views.pyc b/1_blog/post/views.pyc new file mode 100644 index 0000000..d1a5955 Binary files /dev/null and b/1_blog/post/views.pyc differ diff --git a/4_blog/static/css/style.css b/1_blog/static/css/style.css similarity index 100% rename from 4_blog/static/css/style.css rename to 1_blog/static/css/style.css diff --git a/4_blog/templates/base.html b/1_blog/templates/base.html similarity index 92% rename from 4_blog/templates/base.html rename to 1_blog/templates/base.html index 191f52b..c4f007e 100644 --- a/4_blog/templates/base.html +++ b/1_blog/templates/base.html @@ -5,8 +5,7 @@ {% block title %}{% endblock %} - - +