• django开发个人博客系统


    本文主要讲述基于Django框架上,搭建一个比较简单的个人博客

    django开发个人博客系统

    项目版本

    运行平台:windows
    Python版本:3.7
    Django版本:3
    数据库工具:mysql
    开发工具:Pycharm

    项目搭建

    • 直接在pycharm里新建一个Django项目即可

    • 创建完后会自动生成Django的框架,那我们这就简单介绍一下各个文件是做什么的

    ​ 

    配置数据库

    在项目的setting.py文件中 

    邮件配置;邮箱注册账号会用到.在项目的setting.py文件中 

    ​ 

    安装依赖:

    代码拿到后我们可以使用如下的命令来安装所需要的包:

    pip install -r requirements.txt

    连接数据库,这里用的MySQL,请执行三板斧,完成数据库迁移.

    python manage.py makemigrations

    python manage.py migrate

    python manage.py createsuperuser

     最后执行 python manage.py runserver 到这里基本上这个系统就可以自己跑通把玩了!

    环境搭建;创建项目,app;连接数据库;建立模型等其他疑问请移步:基于python3.10的Django4.1项目安装启动_weixin_40686234的博客-CSDN博客

    文末可获取完整代码

    这里为了方便项目管理使用了二级域名

    urls.py

    1. """django3blog URL Configuration
    2. The `urlpatterns` list routes URLs to views. For more information please see:
    3. https://docs.djangoproject.com/en/3.0/topics/http/urls/
    4. Examples:
    5. Function views
    6. 1. Add an import: from my_app import views
    7. 2. Add a URL to urlpatterns: path('', views.home, name='home')
    8. Class-based views
    9. 1. Add an import: from other_app.views import Home
    10. 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
    11. Including another URLconf
    12. 1. Import the include() function: from django.urls import include, path
    13. 2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
    14. """
    15. from django.contrib import admin
    16. from django.urls import path, re_path
    17. from apps.index.views import IndexView
    18. from django.urls import include
    19. from apps.user.views import UserLoginView
    20. from django3blog import settings
    21. from django3blog.settings import MEDIA_ROOT
    22. from django3blog.settings import MEDIA_URL
    23. from django.views.static import serve
    24. # 缓存服务
    25. from django.views.decorators.cache import cache_page
    26. urlpatterns = [
    27. path('admin/', admin.site.urls),
    28. path('index', cache_page(1)(IndexView.as_view()), name="index"),
    29. path('', UserLoginView.as_view(), name="login"),
    30. path('user/', include("apps.user.urls")),
    31. path('search/', include("apps.search.urls")),
    32. # capthca
    33. path('captcha/', include('captcha.urls')),
    34. # blog
    35. path('blog/', include('apps.blog.urls')),
    36. # MEDIA_URL配置
    37. re_path('media/(?P.*)', serve, {"document_root": settings.MEDIA_ROOT}),
    38. path('mdeditor/', include('mdeditor.urls')),
    39. ]

    用户注册模型models.py

    1. import time
    2. from datetime import datetime
    3. from django.db import models
    4. from django.contrib.auth.models import AbstractUser
    5. # 用户信息
    6. class UserInformationModel(AbstractUser):
    7. nike_name = models.CharField(max_length=50,verbose_name=u"昵称",default='')
    8. birthday = models.DateField(verbose_name=u'生日', null=True, blank=True)
    9. gender = models.CharField(max_length=6, choices=(("male", u"男"), ("female", u"女")), default="female")
    10. image = models.ImageField(upload_to="image/%Y/%m", default="image/default.png", max_length=200, null=True)# 用戶上传图像
    11. describe = models.CharField(max_length=500,default=' ',verbose_name=u'个性签名')
    12. class Meta:
    13. verbose_name = "用户信息"
    14. verbose_name_plural = verbose_name
    15. def __unicode__(self):
    16. return self.username
    17. # 验证码
    18. class EmailVerificationModel(models.Model):
    19. code = models.CharField(max_length=20, verbose_name=u'验证码')
    20. email = models.EmailField(max_length=200, verbose_name=u'邮箱')
    21. send_type = models.CharField(max_length=10, choices=(("register", u'注册'), ("forget", u'密码找回')))
    22. send_time = models.DateTimeField(default=datetime.now)
    23. class Meta:
    24. verbose_name = u'邮箱验证码'
    25. verbose_name_plural = verbose_name

     代码量还是不少的,完整项目获取

    重构了代码,同时更新了博客内容,关键难点已经写下来了。注释也很清晰了.
    如果有问题欢迎在评论区提问。
    如果想要获取完整项目,请扫码赞助该项目。
    获取方式:赞助9.9,留言邮箱地址。

     如果大家看了觉得有帮助请点赞,为了大家重新写了这篇文章,同时重构了代码,确保一定能跑通。

  • 相关阅读:
    手写小程序摇树工具(四)——遍历wxml、wxss、wxs文件
    QComboBox多选框的实现(源码):采用QListWidget实现多选后控件丢失的问题(探讨)
    做事软件开发-法的重要性所在以及合理结论的认识
    AM@邻域@极限定义中的符号说明
    pyspark.sql.dataframe.DataFrame 怎么转pandas DataFrame
    src实战-两处nacos未授权访问
    深入理解多线程编程和 JVM 内存模型
    Android内存回收机制、GC算法及内存问题分析解决
    【Qt】窗口部件 标准对话框
    【细度经典】阅读spring security 官方文档Architecture部分
  • 原文地址:https://blog.csdn.net/weixin_40686234/article/details/127568797