Django 2.0 快速搭建博客

本文仅是用于操作记忆,长时间不用容易忘记,本来是打算云笔记里写好自己看的,可是云笔记里markdown图片比较麻烦,因些还是在上写好,到时可以收藏过去。本文大部份内容参考了虫师, 大家感兴趣,也可以直接访问,如有侵权,请告知,我会删除。

本操作的环境:

===================

Windows 10

python 3.6 https://www.python.org/

Django 2.0 https://www.djangoproject.com/

===================

0X01 创建项目

创建虚拟环境:

> md djangoproject
> cd djangoproject
> virtualenv --no-site-package venv

由于这个时候环境里是非常干净的,什么都没有,我们要安装django

> pip install django

创建mysite项目和blog应用

> django-admin startproject mysite  # 创建项目
> cd mysite # 进入项目目录
> python manage.py startapp blog # 创建blog应用

项目目录结构:


Django 2.0 快速搭建博客_第1张图片
路径结构.png

项目目录介绍:


manage.py : Django项目里面的工具,通过它可以调用django shell和数据库等。

mysite/

| --- settings.py : 包含了项目的默认设置,包括数据库信息,调试标志以及其他一些工作的变量。

| --- urls.py : 负责把URL模式映射到应用程序。

| --- wsgi.py : 用于项目部署。

blog /

| --- admin.py : django 自带admin后面管理,将models.py 中表映射到后台。

| --- apps.py : blog 应用的相关配置。

| --- models.py : Django 自带的ORM,用于设计数据库表。

| --- tests.py : 用于编写Django单元测试。

| --- veiws.py :视图文件,用于编写功能的主要处理逻辑。

我们虽然创建了blog应用, 但是这个时候项目里面是没有blog应用的,我们要打开settings.py 配置文件,添加blog应用。


Django 2.0 快速搭建博客_第2张图片
配置blog.png

0x02 创建admin数据

这里是为了能够进入django为我们默认的admin后台,django是一个很完善的框架,我们不必自己写admin后台。
直接使用django默认的SQLite3,如果有需要使用其他数据库,可以在settings.py里直接修改。

Django 2.0 快速搭建博客_第3张图片
数据库修改.png

生成数据库
> python manage.py migrate

注意: 执行这条命令的目录是在与manage.py同一个文件中,否则manage.py要带上路径名

Django 2.0 快速搭建博客_第4张图片
执行成功png

创建超级管理员帐号

python manage.py createsuperuser
Username (leave blank to use 'fnngj'): admin    # 管理员帐号,名字随你高兴
Email address: [email protected]      # email,只是登录django使用,不用真实邮箱
Password:                          # 密码
Password (again):                  # 重复密码
Superuser created successfully.

0x03 启动django

通过Django自带的命令runserver启动
python manage.py runserver

Django 2.0 快速搭建博客_第5张图片
启动服务.png

Django 2.0 快速搭建博客_第6张图片
前端界面.png

访问Admin 后台:http://127.0.0.0:8000/admin , 使用前面创建的超级管理员账号。
Django 2.0 快速搭建博客_第7张图片
登陆.png

可以看后台只有Groups,Users, 这是Django为我们自动生成用户管理。
Django 2.0 快速搭建博客_第8张图片
后台.png

0x04 设计数据库 - Model层的使用

  1. 设计blog表

打开blog文件夹里面的model.py文件,接下来我们的主要战场都是在blog下面。

这里直接使用的是继承models.Model类,方便使用,我们不用手动写sql去建立表,scrapy也是借鉴的django的模式

from django.db import models

# Create your models here.
class BlogsPost(models.Model):
    title = models.CharField(max_length = 150)  # 博客标题,字符类型,最长150个字符
    body = models.TextField()                   # 博客正文,文本类型
    timestamp = models.DateTimeField()          # 创建时间,日期类型
  1. 重新同步数据库

每次修改完model.py,都要重新同步数据库,这样才能把新的设置更新出来

> python manage.py makemigrations blog # 更新数据库,只有一个应用时blog可以不写
> python manage.py migrate # 同步数据库
  1. 通过Admin后台管理
    新生成的数据库如果不添加进Admin是看不到的,我们要admin.py文件里添加上,才能通过Admin后台进行管理。
from django.contrib import admin
from blog.models import BlogsPost #导入BlogsPost

# Register your models here.
class BlogsPostAdmin(admin.ModelAdmin):
    list_display = ['title', 'body', 'timestamp'] # 控制显示那些列


admin.site.register(BlogsPost, BlogsPostAdmin) # 注册
  1. 添加博客内容
    再次登陆admin, 可以看到blog相关内容已经出现了。


    Django 2.0 快速搭建博客_第9张图片
    blog内容.png

    点击blogs posts添加内容


    Django 2.0 快速搭建博客_第10张图片
    博客内容.png

    添加完内容,点击save

0x05 模板 Template

在blog项目下创建templates目录(mysite/blog/templates/),在目录下创建模板文件index.html,内容如下:




    我的博客


{% for blog in blog_list %}
    

{{ blog.title }}

{{ blog.timestamp }}

{{ blog.body }}

{% endfor %}

0x06 视图 View

修改mysite/blog/views.py文件:

from django.shortcuts import render
from blog.models import BlogsPost # 导入BlogsPost

# Create your views here.
def blog_index(request):
    blog_list = BlogsPost.objects.all()  # 取出数据库中所有数据
    return render(request, 'index.html', {'blog_list':blog_list})   # 渲染数据到index.html页面

blog_list = BlogPost.objects.all() :获取数据库里面的所有BlogPost对象

render 渲染页面(index.html),相当于用blog_list里面的内容到index.html页面去填空。

0x07 设置url

所有的东西都设置好了,那么我们通过什么去看我们的页面呢,这里就涉及到了url, 我们要为我们的页面设置专属的url。
修改mysite/urls.py文件:

from django.contrib import admin
from django.urls import path
from blog import views #导入视图

urlpatterns = [
    path('admin/', admin.site.urls),
    path('blog/', views.blog_index), # 通过http://127.0.0.1:8000/blog/访问
    ]

我们在浏览器中输入 http://127.0.0.1:8000/blog/, 就能看到我们的博客了.

Django 2.0 快速搭建博客_第11张图片
博客.png

当然,丑是丑了点,可以自己加上css文件进行样式调整。

0x08 美化页面

有很多的前面模板可以下载,我这里推荐使用semantic ui, 语义法的方式真的很方便学习。
随便写一下 看看效果:

 



    我的博客
    
     
    



    
    
{% for blog in blog_list %}
{{ blog.title }}
{{ blog.timestamp }}

{{ blog.body }}

{% endfor %}
Django 2.0 快速搭建博客_第12张图片
美化页面后.png

至此,最简单的博客搭建成功了,我们可以继续优化细节了。

你可能感兴趣的:(Django 2.0 快速搭建博客)