1.创建一个 project
django-admin startproject mysite
2.在 mysite 下面创建一个 app
python manage.py startapp blog
注:Django 1.8.x 以上的,还有一个 migrations 文件夹。Django 1.9.x 还会在 Django 1.8 的基础上多出一个 apps.py 文件。但是这些都与本文无关。
3.初始化 admin 后台数据库
python manage.py migrate
4.设置 admin 应用,添加 blog 应用
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'blog', ]
5.启动 admin 容器
python manage.py runserver 9999 &
6.访问 后台应用
http://127.0.0.1:9999/admin
此时用户名密码需要进行设置
7. 设计 Model 即设计数据库表
在 mysite/blog/models.py
from django.db import models from django.contrib import admin # Create your models here.class BlogsPost(models.Model): title = models.CharField(max_length = 150) body = models.TextField() timestamp = models.DateTimeField() admin.site.register(BlogsPost)
8.再次初始化数据库
python manage.py makemigrations blog
python manage.py migrate
9.再次启动容器,访问 Admin 后台,创建文章
10.设置 admin 的 BlogsPost 界面打开 mysite/blog/models.pyfrom django.db import modelsfrom django.contrib import admin # Create your models here.class BlogsPost(models.Model): title = models.CharField(max_length = 150) body = models.TextField() timestamp = models.DateTimeField() class BlogPostAdmin(admin.ModelAdmin): list_display = ('title','timestamp') admin.site.register(BlogsPost,BlogPostAdmin)
创建BlogPostAdmin类,继承admin.ModelAdmin父类,以列表的形式显示BlogPost的标题和时间
11.创建 blog 公共部分
从Django的角度看,一个页面具有三个典型的组件:
一个模板(template):模板负责把传递进来的信息显示出来。
一个视图(view):视图负责从数据库获取需要显示的信息。
一个URL模式:它负责把收到的请求和你的试图函数匹配,有时候也会向视图传递一些参数。
1) 创建模板
创建 mysite/blog/templates/ 在目录下创建 index.html
{% for post in blog_list %}<h2>{{ post.title }}</h2>
<p>{{ post.timestamp }}</p><p>{{ post.body }}</p> {% endfor%}
2)创建视图函数
打开 mysite/blog/views.py
#coding=utf-8from django.shortcuts import render from blog.models import BlogsPost from django.shortcuts import render_to_response # Create your views here.def index(request): blog_list = BlogsPost.objects.all() return render_to_response('index.html',{'blog_list':blog_list})blog_list = BlogPost.objects.all() :获取数据库里面所拥有BlogPost对象
render_to_response()返回一个页面(index.html),顺带把数据库中查询出来的所有博客内容(blog_list)也一并返回
3)创建 blog 的 URL 模式在 mysite/urls.py 文件里添加 blog 的 url:Django 1.7 以下:from django.conf.urls import url from django.contrib import admin urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^blog/', blog.views.index), ]
Django 1.8 以上:先导入,再使用from django.conf.urls import url from django.contrib import admin from blog import views as blog_views urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^blog/', blog_views.index), ]
4)再次启动服务 python manage.py runserver 9999 &
访问 http://127.0.0.1:9999/blog/
5)添加样式
在 mysite/blog/templates 目录下创建 base.html模板
<html> <style type="text/css"> body{color:#efd;background:#453;padding:0 5em;margin:0} h1{padding:2em 1em;background:#675} h2{color:#bf8;border-top:1px dotted #fff;margin-top:2em} p{margin:1em 0} </style> <body> <h1>blog 样式演示</h1> {% block content %} {% endblock %} </body></html>
修改 index.html 模板,引用 base.html 模板和 content 块
{% extends "base.html" %} {% block content %} {% for post in blog_list %} <h2>{{ post.title }}</h2> <p>{{ post.timestamp | date:"1,F jS"}}</p> <p>{{ post.body }}</p> {% endfor %} {% endblock %}