学了一段时间的Django了,觉得再学下去可能也学不会了,而且以前学到可能都会忘掉,所以就来做一个简单的博客系统,来巩固一下自己学的知识.
感谢大神的教程:Django搭建个人博客.
首先创建projectPersonal_blog,创建好project后,在终端输入以下命令创建app:
python manager.py startapp article
然后对settings.py进行相应的配置,包括:
import pymysql
pymysql.install_as_MySQLdb()
相关的配置都做好以后,接下来就开始编写url和models.
在与项目同名的Personal_blog文件夹下的urls.py中配置article这个app的url:
from django.contrib import admin
from django.urls import path
from django.urls.conf import include
urlpatterns = [
path('admin/', admin.site.urls),
path('article/', include('article.url',namespace='article')), # namespace可以保证反查到唯一的url,即使不同的app使用了相同的url(后面会用到)。
]
然后在article下创建一个url.py文件,然后配置url:
from django.urls import path
from article import views
app_name = 'article' # 正在部署的应用的名称
urlpatterns = [
# 参数name用于反查url地址,相当于给url起个名字
path('article-list/',views.article_list,name='article_list' ),
]
view.py:
from django.shortcuts import render,redirect,HttpResponse
# Create your views here.
def article_list(request):
return HttpResponse('Hello World')
然后运行项目,在终端中输入:http://127.0.0.1:8000/article/article-list/,我们的项目正常运行,接下来就来创建数据表:
先来创建一个简单的文章数据表,包括文章作者,文章标题,文章正文,文章创建时间,文章更新时间,并且与作者是多对一的关系:
from django.db import models
# 导入内建的User模型
from django.contrib.auth.models import User
# timezone用于处理时间相关事务
from django.utils import timezone
# Create your models here.
# 博客文章数据类型
# 包括:文章作者,文章标题,文章正文,文章创建时间,文章更新时间
class ArticlePost(models.Model):
# 文章作者,参数on_delete用于指定数据删除的方式
# ForeignKey是一对多关系,这里关联的是User,意思就是一个作者可以对应多个文章
# User是Django自带的一个账号系统,可以满足一般网站的用户相关的基本功能
author = models.ForeignKey(User,on_delete=models.CASCADE)
# 文章标题.modesl.CharField是字符串字段,用于保存较短的字符串,比如标题
title = models.CharField(max_length=100)
# 文章正文,保存大量文本使用TextField
body = models.TextField()
# 文章创建时间,参数default=timezone.now指定其在创建数据时将默认写入当前时间
created = models.DateTimeField(default=timezone.now)
# 文章更新时间.参数auto_now=True指定每次数据更新的时候自动写入当前时间
updated = models.DateTimeField(auto_now=True)
# 定义一些额外的内容,规范ArticlePost中的数据行为
# 内部类class Meta用于给model定义元数据
class Meta:
# ordering 指定模型返回的数据的排列顺序
# '-created'表明数据应该以倒序排列
ordering = ('-created',)
def __str__(self):
# return self.title将文章标题返回
return self.title
我们使用的是Django自带的User,User是Django自带的一个账号系统,可以满足一般网站的用户相关的基本功能.
models创建完成后,接下来就是将数据表加入到数据库中:
python manager.py makemigrations
python manager.py migrate
下一步,就利用Django自带的后台管理系统来创建一些数据.
管理员账号(Superuser)是可以进入网站后台,对数据进行维护的账号,具有很高的权限。这里我们需要创建一个管理员账号,以便添加后续的测试数据。
在终端中输入:
python manage.py createsuperuser
注:在这一步操作之前,一定要创建完成数据表,也就是一定要完成python manager.py makemigrations和python manager.py migrate,否则就无法创建超级用户.
然后输入你的账号,邮箱以及密码进行创建:
Username (leave blank to use 'fml'): fml
Email address: 2459420737@qq.com
Password:
Password (again):
Superuser created successfully.
超级用户创建完成后,就需要将我们的用户表注册到后台管理中,在article下的admin.py中操作(admin就是用来做后台管理的):
article/admin.py
from django.contrib import admin
# Register your models here.
from article.models import ArticlePost
admin.site.register(ArticlePost)
然后就在浏览器中进入后台管理:http://127.0.0.1:8000/admin/
输入你刚才创建的用户名和密码,点击进入. 点击"+add":
可以看到,这些字段就是我们创建的字段.
然后加入一些数据就行了.
先告一段落,后续还会更新.
本文是个人的一些学习笔记,如有侵权,请及时联系我进行删除,谢谢大家.