美文网首页
Django 2.0 快速搭建博客

Django 2.0 快速搭建博客

作者: Stevent | 来源:发表于2018-04-20 12:19 被阅读494次

    本文仅是用于操作记忆,长时间不用容易忘记,本来是打算云笔记里写好自己看的,可是云笔记里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应用
    

    项目目录结构:


    路径结构.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应用。


    配置blog.png

    0x02 创建admin数据

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

    数据库修改.png
    生成数据库
    > python manage.py migrate

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

    执行成功png

    创建超级管理员帐号

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

    0x03 启动django

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

    启动服务.png 前端界面.png
    访问Admin 后台:http://127.0.0.0:8000/admin , 使用前面创建的超级管理员账号。
    登陆.png
    可以看后台只有Groups,Users, 这是Django为我们自动生成用户管理。
    后台.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相关内容已经出现了。


      blog内容.png

      点击blogs posts添加内容


      博客内容.png
      添加完内容,点击save

    0x05 模板 Template

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

    <!DOCTYPE html>
    <html>
    <head>
        <title>我的博客</title>
    </head>
    <body>
    {% for blog in blog_list %}
        <h2>{{ blog.title }}</h2>
        <p>{{ blog.timestamp }}</p>
        <p>{{ blog.body }}</p>
    {% endfor %}
    </body>
    </html>
    

    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/, 就能看到我们的博客了.

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

    0x08 美化页面

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

    <!DOCTYPE html> 
    <html>
    
    <head>
        <title>我的博客</title>
        <!-- 引入semantic -->
        <link rel="stylesheet" href="https://cdn.jsdelivr.net/semantic-ui/2.2.4/semantic.min.css"> 
        <script src="https://cdn.jsdelivr.net/semantic-ui/2.2.4/semantic.min.js"></script>
    </head>
    
    <body>
        <div class="ui attached stackable menu">
            <div class="ui container">
                <a class="item">
                  <i class="home icon"></i> Home
                </a>
                <a class="item">
                  <i class="grid layout icon"></i> Browse
                </a>
                <a class="item">
                  <i class="mail icon"></i> Messages
                </a>
            </div>
        </div>
        <div class="ui container">
            <div class="ui segment">
                <div class="ui items">
                    {% for blog in blog_list %}
                    <div class="item">
                        <div class="content">
                            <a class="header">{{ blog.title }}</a>
                            <div class="meta">
                                <span>{{ blog.timestamp }}</span>
                            </div>
                            <div class="description">
                                <p>{{ blog.body }}</p>
                            </div>
                        </div>
                    </div>
                    <div class="ui divider"></div>
                    {% endfor %}
                </div>
            </div>
        </div>
    </body>
    
    </html>
    
    美化页面后.png

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

    相关文章

      网友评论

          本文标题:Django 2.0 快速搭建博客

          本文链接:https://www.haomeiwen.com/subject/fndakftx.html