- A+
1.MODEL设计
- #myblog\blog\models.py
- from django.db import models
- from datetime import datetime
- from django.db import models
- class ArticleBlog(models.Model):
- title = models.CharField(max_length=50,default='小小',verbose_name=u'标题')
- content = models.TextField(help_text='博客内容',verbose_name=u'内容')
- pubtime = models.DateTimeField(default=datetime.now, verbose_name=u"添加时间")
- class Meta:
- verbose_name = "博客"
- verbose_name_plural = verbose_name
- ordering = ["-pubtime"]
- def __str__(self):
- return self.title
2.VIEWS设计
- #myblog\blog\views.py
- #coding=utf-8
- from django.shortcuts import render
- from django.shortcuts import HttpResponse
- from . import models
- def index(request):
- articles = models.ArticleBlog.objects.all()
- return render(request, 'index.html', { 'articles': articles})
- def article_page(request, article_id):
- article = models.ArticleBlog.objects.get(pk=article_id)
- return render(request,'article_page.html',{'article':article})
- def edit_page(request,article_id):
- if str(article_id) == '0':
- return render(request,'edit_page.html')
- article = models.ArticleBlog.objects.get(pk=article_id)
- return render(request,'edit_page.html',{'article':article})
- def edit_action(request):
- title = request.POST.get('title','标题')
- content = request.POST.get('content','博客内容')
- article_id = request.POST.get('article_id','0')
- if article_id == '0':
- models.ArticleBlog.objects.create(title=title,content=content)
- articles = models.ArticleBlog.objects.all()
- return render(request,'index.html',{'articles':articles})
- article = models.ArticleBlog.objects.get(pk=article_id)
- article.title = title
- article.content = content
- article.save()
- return render(request, 'article_page.html', {'article': article})
3.URL设计
1)根URLS设计
- #myblog\urls.py
- from django.conf.urls import url,include
- from django.contrib import admin
- from blog.views import *
- urlpatterns = [
- url(r'^admin/', admin.site.urls),
- url(r'^blog/', include('blog.urls',namespace='blog')),
- ]
2)应用URLS设计
- #myblog\blog\urls.py
- # -*- coding:utf-8 -*-
- __author__ = "moonrong"
- __date__ = "2018/7/15 15:15"
- from django.conf.urls import url
- from . import views
- urlpatterns = [
- url(r'^$', views.index),
- url(r'^article/(?P<article_id>[0-9]+)$', views.article_page, name='article_page'),
- url(r'^edit/(?P<article_id>[0-9]+)$', views.edit_page,name='edit_page'),
- url(r'^edit/action$',views.edit_action,name='edit_action'),
- ]
4.模板设计
1)博客主页面index.html代码编写
- <html>
- <body>
- <h1>基于Django开发的博客系统</h1>
- <h5>
- <a href="{% url 'blog:edit_page' 0 %}">【新建文章】</a>
- </h5>
- <h4>博文列表</h4>
- {% for article in articles %}
- <a href="{% url 'blog:article_page' article.id %} ">{{ article.title }}</a>
- <p>{{ article.pubtime }}</p>
- <h4></h4>
- </br>
- {% endfor %}
- </body>
- </html>
2)博客内容页面article_page.html
- <body>
- <h1>下面是博客内容页</h1>
- <h4></h4>
- <br>
- <h3>{{ article.title }}</h3>
- </br>
- <h3>{{ article.content }}</h3>
- <h4></h4>
- </br></br>
- <a href="{% url 'blog:edit_page' article.id %}">修改文章</a>
- </body>
3)博客撰写页面edit_page.html
- <body>
- <form action="{% url 'blog:edit_action' %}" method="post">
- {% csrf_token %}
- {% if article %}
- <input type="hidden" name="article_id" value="{{ article.id }}"/>
- <label>文章标题
- <input type="text" name="title" value="{{ article.title }}"/>
- </label>
- <br/>
- <label>文章内容
- <input type="text" name="content" value="{{ article.content }}"/>
- </label>
- <br/>
- {% else %}
- <input type="hidden" name="article_id" value="0"/>
- <label>文章标题
- <input type="text" name="title" />
- </label>
- <br/>
- <label>文章内容
- <input type="text" name="content" />
- </label>
- <br/>
- {% endif %}
- <input type="submit" value="提交">
- </form>
- </body>
5.相关配置项目
1)应用apps.py文件配置
- from django.apps import AppConfig
- class BlogConfig(AppConfig):
- name = 'blog'
2)注册后台管理admin.py配置
- # -*- coding:utf-8 -*-
- from django.contrib import admin
- from .models import ArticleBlog
- # Register your models here.
- # 定义ArticleBlog的管理器
- class ArticleBlogAdmin(admin.ModelAdmin):
- list_display = [ 'title', 'content','pubtime']
- search_fields = ['title', 'content']
- list_filter = ['title', 'pubtime']
- # 将管理器与model进行注册关联
- admin.site.register(ArticleBlog, ArticleBlogAdmin)