使用Django搭建个人博客网站
创建项目
首先要在命令行创建Django项目:
$ django-admin startproject my_blog
初始化设置
在my_blog/my_blog/setting.py
中修改下面几个选项:
添加等待要创建的应用:
创建应用
现在来创建博客应用
进入刚刚创建的my_blog
项目后执行:
$ python manage.py startapp blog
可以看到已经创建了blog
应用
创建模型与数据库
使用mysql数据库
这个坑留着,先用自带的sqlite。
链接:https://blog.csdn.net/mildddd...
编写模型
打开my_blog/blog/models.py
添加如下内容:
from django.db import models from django.contrib.auth.models import User # Create your models here. class BlogType(models.Model): type_name = models.CharField(max_length=50) def __str__(self): return self.type_name # 显示标题类型 class Blog(models.Model): title = models.CharField(max_length=50) # 标题 blog_type = models.ForeignKey(BlogType,on_delete=models.DO_NOTHING) # 标题类型 author = models.ForeignKey(User,on_delete=models.DO_NOTHING) # 作者 content = models.TextField() # 文章内容 created_time = models.DateTimeField(auto_now_add=True) # 创建时间 last_updated_time = models.DateTimeField(auto_now_add=True) # 上一次更新时间 def __str__(self): return "<Blog: %s>" % self.title # 显示标题
注意:想要应用同一文件的类,要把被引用的类放在应用这个类的类之前。例如这里要把BlogType
类放在blog
类之前。
初始化数据库
先进行数据库迁移:
$ python manage.py migrate Operations to perform: Apply all migrations: admin, auth, contenttypes, sessions Running migrations: Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK ....
再来创建管理员:
$ python manage.py createsuperuser :(输入用户名)root :(输入邮箱)[[:blank:]] // 这里不需要可以直接空格 :(输入密码) zxc123456 // 太简单的密码不允许 :(重复密码) zxc123456 Superuser created successfully.
然后创建数据库:
$ python manage.py makemigrations Migrations for 'blog': blog\migrations\0001_initial.py - Create model Blog - Create model BlogType - Add field blog_type to blog
编写管理界面
编辑my_blog/blog/admin.py
:
from django.contrib import admin from .models import Blog,BlogType # 引入模型 @admin.register(BlogType) class BlogTypeAdmin(admin.ModelAdmin): list_display = ('id','type_name') # 显示的内容 @admin.register(Blog) class BlogAdmin(admin.ModelAdmin): list_display = ('title','blog_type','author','created_time','last_updated_time') # 显示的内容
编写视图
编写my_blog/blog/views.py
:
from django.shortcuts import render_to_response, get_object_or_404 from .models import Blog # 引入models.py文件下的Blog模型 def blog_list(request): context = {} context['blog'] = Blog.objects.all() # 博客列表 return render_to_response('blog_list.html',context) def blog_detail(request,blog_pk): context = {} context['blog'] = get_object_or_404(Blog,pk=blog_pk) # 博客内容 return render_to_response('blog_detail.html',context)
然后在blog
目录下创建一个templates
的文件夹,视图都将存放在里面。在里面创建blog_detail.html
和blog_list.html
。blog_detail.html
:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>{{ blog.title }}</title> </head> <body> <div> <a href="{% url 'home' %}"> <h3>My Blog</h3> </a> </div> <h3>{{ blog.title }}</h3> <p>{{ blog.content }}</p> </body> </html>
blog_list.html
:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>My Blog</title> </head> <body> {% for blog in blogs %} <a href="{% url 'blog_detail' blog.pk %}"> <h3>{{ blog.title }}</h3> </a> <p>{{ blog.content }}</p> {% endfor %} </body> </html>
编写访问路径
在my_blog/blog/
目录下创建urls.py
:
from django.urls import path from . import views urlpatterns = [ # http://localhost:8000/blog/# path('<int:blog_pk>',views.blog_detail,name="article_detail"), ]
再去my_blog/my_blog/urls.py
中设置:
启动服务器
然后可以进管理界面查看效果了:
$ python manage.py runserver
浏览器输入:
http://127.0.0.1:8000/admin
输入刚刚的账号和密码