美文网首页
Django搭建个人博客(终篇)

Django搭建个人博客(终篇)

作者: JM68 | 来源:发表于2018-05-12 13:36 被阅读0次

配置Model

在blog/myblog/blog中models.py配置

from django.db import models


# Create your models here.
class Article(models.Model):
    a_title = models.CharField('标题', max_length=20)      
    a_content = models.TextField('内容')
    a_create_time = models.DateTimeField('发表时间', auto_now_add=True)
    a_update_time = models.DateTimeField('修改时间', auto_now=True, null=True)
    abstract = models.CharField('摘要', max_length=200, blank=True, null=True, )

    def __str__(self):     # 美化后台管理显示文章标题而不是article_object
        return self.a_title
    class Meta:
        db_table = 'article'
        verbose_name = '博文'      # 美化后台管理
        verbose_name_plural = '博文'

在blog/myblog 运行 python manage.py makemigrations然后运行 python manage.py migrate 迁移数据库
现在你的blog数据库中就会有如下表格(如果你想有一个更亲切的mysql操作界面可以下载使用Navigate 12 for Mysql):

4.PNG

配置views

在blog/myblog/blog中views.py配置

```
from django.core.paginator import Paginator
from django.shortcuts import render
from django.views.generic.detail import DetailView
import markdown2, re
from blog.models import Article


# Create your views here.
def index(request):
     if request.method == 'GET':
        return render(request, 'index.html')


def blog(request):
    if request.method == 'GET':
        page_id = request.GET.get('page_id', 1) # 默认第一页
        articles = Article.objects.all().order_by('-id')           # 按id倒序
        paginator = Paginator(articles, 3) # 每页三篇文章
        articles_list = paginator.page(int(page_id))  # 每页包含的文章对象列表
        return render(request, 'blog.html', {'articles': articles_list}) # 返回给页面


class ArticleDetailView(DetailView):
    model = Article
    template_name = 'detail.html'
    context_object_name = "article"
    pk_url_kwarg = 'article_id'

    def get_object(self, queryset=None):
        obj = super(ArticleDetailView, self).get_object()
        obj.a_content = markdown2.markdown(obj.a_content)      # markdown格式处理数据
        return obj


def contact(request):
    if request.method == 'GET':
        return render(request, 'contact.html')


def search(request):
    if request.method == 'GET':
        return render(request, 'search.html')


def search_for(request):
    search_for = request.GET['search_for']
    if search_for:
        results = []
        article_list = Article.objects.all().order_by('-id')
        for article in article_list:
            pattern = re.compile(search_for, flags=re.IGNORECASE)  # 默认搜索文章标题忽略大小写
            if pattern.findall(article.a_title):
                results.append(article)
        for article in results:  # 将搜索结果以列表形式返回给页面
            article.body = markdown2.markdown(article.a_content)
        return render(request, 'search.html', {'arts': results})
    else:
        return render(request, 'search.html')

配置urls

在blog/myblog/blog中urls.py配置

from django.conf.urls import url

from blog import views

urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^blog/', views.blog),
    url(r'^article/(?P<article_id>\d+)$', views.ArticleDetailView.as_view(), name='detail'),
    url(r'^contact/$', views.contact, name='contact'),
    url(r'^search/$', views.search),
    url(r'^search/search/', views.search_for),
]

配置admin

将model注册到后台管理就可以通过后台添加删除编辑(增删改查)数据

from django.contrib import admin
from .models import Article

# Register your models here.
admin.site.register([Article,])

在blog/myblog/中运行 python manage.py createsuperuser依次输入要创建的管理员名称与密码,然后python manage.py runserver 127.0.0.1:8000/admin 输入你的账号密码,在博文中添加内容就好,添加后返回站点就可以看见自己的博文了.


由于templates文件我是直接上传分享的,里面涉及到的内容可以自己百度一下,也可以试试为博客新添一些功能,比如点赞\访问量(可利用中间键达成),比如增加照片页面(思路:新建一个照片数据库,在设置中配置media)……很多很多,都可以自己去学习完善各项功能,折腾折腾就理解了.
最后运行python manage.py runserver
展示效果大致如下:

12PNG.PNG 13.PNG

由于个人的服务器正在做项目测试所以没有部署在服务器上供大家展示,这个博客足够简单,很多细节的地方可能我也没有太过在意,有查不到的问题可以评论,或者添加其他功能的时候遇到困难也可以问我,希望共同学习

相关文章

  • Django搭建个人博客(终篇)

    配置Model 在blog/myblog/blog中models.py配置 在blog/myblog 运行 pyt...

  • 个人博客搭建完成

    花了一个周末,用Django搭建了个人博客。其中参照了Django 博客开发教程。 个人博客只是初步完成,需要修改...

  • Django 搭建个人博客

    今天开始进行搭建个人博客,基于Django框架,记录遇到的一些坑与注意的问题。 系统环境:Win10,Python...

  • python Django学习资料

    Django资源: Django 最佳实践 Django搭建简易博客教程 The Django Book 中文版 ...

  • Django笔记01-环境搭建

    环境搭建 在经过几个django教程的洗礼之后,决定自己动手使用django搭建一个个人博客,并写下笔记作为记录 ...

  • Django + nginx + uwsgi搭建博客 整理

    Django + nginx + uwsgi搭建博客 整理 标签(空格分隔):Python Django Blog...

  • Django搭建个人博客(二)

    更换数据表mysql 上文说到编写好了我们的 model 模块,映射生成数据表,之前我们用的是Django 默认的...

  • Django搭建个人博客:前言

    Django是一个由Python写成的开源Web应用框架,可以用它以更快的速度、更少的代码,搭建一个高性能的网站。...

  • Django搭建个人博客(中篇)

    前端模板 这篇文章的目标是利用Django搭建简易博客,所以我直接将我修改好的模板分享出来,原模板是在Bootst...

  • Django搭建个人博客(开篇)

    本文的目标是利用Django与Bootstap搭建个人博客,只要懂得Python的基础知识和前端的基础知识即可,搭...

网友评论

      本文标题:Django搭建个人博客(终篇)

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