Django开发个人博客网站
- 作者: 五速梦信息网
- 时间: 2026年03月19日 18:00
1. 安装python和django并配置环境变量;
2. 将 django-admin.py 文件复制到目录A(A表示你想在该目录下创建项目);
3. 输入【 python django-admin.py startproject project_name 】创建项目;
4. 输入【 python .\manage.py runserver 127.0.0.1:8000 】运行本地IP,跑起项目,此时即可选择浏览器,输入网址 “http://127.0.0.1:8000/” 打开网页;
5. 输入【 python .\manage.py startapp appName 】创建app项目,并进行如下配置:
1)手动添加urls.py;
2)配置【setting.py】,包括appName、templates、static等(后续的数据库类型也是在这里配置);
3)理解每个appName下的urls.py和projectName目录下的urls.py的关系,比进行配置;
4)编写appName目录下的【views.py】,返回变量和具体网页;
6. 输入【 python .\manage.py sycndb 】创建数据库
-------------------------------------------------------------------------------------------------------------------------------
1.pycharm,python,django下载安装好后,新建一个项目:mysite (左侧栏中的django)
文件说明如下:
- 【manage.py】一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互。
- 【__init__.py】一个空文件,告诉 Python 该目录是一个 Python 包。
- 【settings.py】该 Django 项目的设置/配置。
- 【urls.py】该 Django 项目的 URL 声明; 一份由 Django 驱动的网站"目录"。
- 【wsgi.py】一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目。
a.setting.py文件中设置下,将语言改为中文,时区改为上海(没有北京时区):
- LANGUAGE_CODE = 'zh-hans'
- TIME_ZONE = 'Asia/Shanghai'
2.安装mysql,navicat并连接创建好数据库myblog
a.修改django中数据库配置,在setting.py中,如下:
- DATABASES = {
- 'default': {
- 'ENGINE': 'django.db.backends.mysql',
- 'NAME': 'myblog', #数据库名
- 'USER':'root', #用户名
- 'PASSWORD':'******', #密码
- 'HOST':'127.0.0.1', #本机地址
- 'PORT':'3306', #端口
-
- }
- }
b.将django与mysql关联上了,但Python并没有与mysql连接上,必须在pycharm的Terminal中安装mysqlclient:
pip install mysqlclient3.创建APP:python manage.py startapp myblog
a.到setting.py中的INSTALLED_APPS中,如下:
- INSTALLED_APPS = [
- 'django.contrib.admin',
- 'django.contrib.auth',
- 'django.contrib.contenttypes',
- 'django.contrib.sessions',
- 'django.contrib.messages',
- 'django.contrib.staticfiles',
- 'myblog', #新建立的app
- ]
- 安装pymysql,因为python3.5没有mysqldb包
- pip install pymysql在settings.py中添加下面内容:
- import pymysql
- pymysql.install_as_MySQLdb()
将settings里面的DATABASES改成MySQL相关
- DATABASES = {
- 'default': {
- 'ENGINE': 'django.db.backends.mysql',
- 'OPTIONS':{'read_default_file': os.path.join(BASE_DIR, 'my.cnf'),}
- }
- }
在settings的上一级目录中添加 my.cnf 文件,内容如下:
- [client]
- database = 'myblog'
- user = 'root'
- password = '123456'
- default-character-set = utf8
进入mysql,查看是否有 miniblog数据库,没有的话需手动创建
b.迁移数据库:
Tools下的run manage.py task下依次直接执行命令:python manage.py makemigrations ; python manage.py migrate
注:
3.博客网站数据库的设计
a. 下面在myblog目录下的models.py中创建这三个表,由于Blog表包含外键与多对多关系,因此首先应当建立另外两个表:
分类(Category)表的创建:
- class Category(models.Model):
- """
- 文章分类
- """
- name = models.CharField(verbose_name='文章类别', max_length=20)
-
- class Meta:
- verbose_name = '文章类别'
- verbose_name_plural = verbose_name
-
- def __str__(self):
- return self.name
这里我们只需要包含一个字段name就行了。
标签(Tag)的创建:
- class Tag(models.Model):
- """
- 文章标签
- """
- name = models.CharField(verbose_name='文章标签', max_length=20)
-
- class Meta:
- verbose_name = '文章标签'
- verbose_name_plural = verbose_name
-
- def __str__(self):
- return self.name
博客(Blog)表的创建:
- from django.utils import timezone
-
- class Blog(models.Model):
- """
- 博客
- """
- title = models.CharField(verbose_name='标题', max_length=100)
- content = models.TextField(verbose_name='正文', default='')
- create_time = models.DateTimeField(verbose_name='创建时间', default=timezone.now)
- modify_time = models.DateTimeField(verbose_name='修改时间', auto_now=True)
- click_nums = models.IntegerField(verbose_name='点击量', default=0)
- category = models.ForeignKey(Category, verbose_name='文章类别')
- tag = models.ManyToManyField(Tag, verbose_name='文章标签')
-
- class Meta:
- verbose_name = '我的博客'
- verbose_name_plural = verbose_name
-
- def __str__(self):
- return self.title
- 关于博客表有以下几点需要注意的:
- 标题应当限定长度,我们设定最大值为100
- 内容不用限定长度,因此用的是TextField字段
- 创建时间按理说应该是不能修改的,应该设定成auto_now_add=True,这样在添加对象时,时间是默认成现在的,且不能修改,可以说你在后台就看不到它。但因为我们现在是开发环境,之后还要从后台添加数据进行测试,如果时间都一样的话,很多功能体现不出来,因此现在设定成可以更改的样式,真正部署时,建议改成auto_now_add=True。
- 修改时间直接设定成,auto_now=True,在你修改时,会自动变成当前时间。
- 关于ForeignKey与ManyToManyField,请自行查看相关文档资料
最后: 再次执行:
- makemigrations
-
- migrate
- 即可将新建的这三个表添加到我们的数据库myblog中:
- auth_group,
- auth_group_permissions,
- auth_permission,
- auth_user_groups,
- auth_user_user_permissions,
- django_admin_log,
- django_content_type,
- django_migrations,
- django_session,
- myblog_blog, #新增的博客表
- myblog_blog_tag, #这个是博客与标签的多对多关系表
- myblog_category, #新增的分类表
- myblog_tag #新增的标签表
- 需要说明的是,这里我们只给出了最开始设计时考虑到的情况,在后续开发过程中,可以随时对其进行变更。当多数据表信息变动时,要执行makemigrations 与 migrate 这样才能使改动生效。
4.通过admin管理后台
pycharm中输入如下命令:
createsuperuseradmin配置:
登录后台后,我们看到此时的后台只有用户、组和最近动作,并没有我们之前创建的我的博客、博客分类、博客标签这些内容。
我们可以在admin.py中进行配置,将其在后台展现出来:
- from myblog.models import Blog, Category, Tag
-
- admin.site.register(Blog)
- admin.site.register(Category)
- admin.site.register(Tag)
- 此时,再次刷新博客admin页面,即可看到我们创建的三张表,并可进行增加、修改、删除操作。
b.现在进入博客只有标题展示出来,如果我们还想添加其它字段,比如点击数、发表时间等,同样可以在admin.py中进行配置:
- class BlogAdmin(admin.ModelAdmin):
- list_display = ['title', 'click_nums', 'category', 'create_time', 'modify_time']
-
- admin.site.register(Blog, BlogAdmin)
如果还想对其它表进行配置,可以按照同样的方法,创建一个继承类即可。下面的注册也需要改一下。
配置完后,刷新下后台,即可看到我们已经成功的将点击数、博客分类、创建时间、修改时间这些字段添加进来了。
5.博客首页的开发
a.现在还没有首页,因为还没有模板:
博客前端模板托管在GitHub:django_blog_templates
将项目下载到本地后,将static文件夹整个拷贝到博客项目根目录下,然后在将index.html拷贝到templates目录下。这里的index.html就是我们博客的首页。
相关文章
-
验证密钥时出错及如何彻底删除Tuxera ntfs!
验证密钥时出错及如何彻底删除Tuxera ntfs!
- 技术栈
- 2026年03月19日
-
神奇的Bodis.com竟是中国公司
神奇的Bodis.com竟是中国公司
- 技术栈
- 2026年03月19日
-
当谈 HTTP 时,谈些什么?
当谈 HTTP 时,谈些什么?
- 技术栈
- 2026年03月19日
-
简约而不简单的Django2.2 新手图文教程
简约而不简单的Django2.2 新手图文教程
- 技术栈
- 2026年03月19日
-
让uWSGI选择使用不同版本的Python
让uWSGI选择使用不同版本的Python
- 技术栈
- 2026年03月19日
-
Django + Uwsgi + Nginx 的生产环境部署
Django + Uwsgi + Nginx 的生产环境部署
- 技术栈
- 2026年03月19日
