zqifa的博客

我不管,反正我最萌~

django 快速搭建blog

利用Django快速搭建一个简单的Blog。参考自《Django Web开发指南》。

Django 自称是“最适合开发有限期的完美WEB框架”。
废话少说,come on!!

本操作的环境:

Windows 7
python 3.6
Django 1.10.5

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

一,创建项目

为blog创建名为mysite的工程项目:

django-admin.py startproject mysite

项目结构如下:

mysite
├── manage.py
└── mysite
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py

manage.py —– Django项目里面的工具,通过它可以调用django shell和数据库等。
settings.py —- 包含了项目的默认设置,包括数据库信息,调试标志以及其他一些工作的变量。
urls.py —– 负责把URL模式映射到应用程序。

二 ,运行开发服务器

要马上查看django项目应用的运行,可以使用Django项目里的mange.py
切换到工程目录,执行运行服务器命令:

python manage.py runserver 0.0.0.0:8000

成功运行后就开启了web服务。

打开浏览器,输入访问地址:127.0.0.1:8000,会看到提示

It worked!

三,创建Blog应用、设置admin应用、配置数据库

admin 是Django 自带的一个后台管理系统。

3.1、创建Blog应用
python manage.py startapp blog

blog应用文件结构如下:

├── blog
│ ├── admin.py
│ ├── __init__.py
│ ├── models.py
│ ├── tests.py
│ └── views.py

添加blog应用,打开mysite/mysite/settings.py 文件:

# Application definition

INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog',
)

在列表末尾,添加blog 应用

在我们创建django项目时,admin就已经创建,打开mysite/mysite/urls.py文件:

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
]

3.2、同步数据库
python manage.py syncdb
注意:Django 1.7.1及以上的版本需要用以下命令
python manage.py makemigrations
python manage.py migrate

3.3、清空数据库
python manage.py flush
3.4、创建超级管理员
python manage.py createsuperuser
按照提示输入用户名和对应的密码就好了邮箱可以留空,用户名和密码必填
修改 用户密码可以用:
python manage.py changepassword username

再次runserver启动服务,访问admin后台,这个时候使用你的账号密码就可以登录admin后台了。

四,设计Model(即设计数据库表)

4.1、添加BlogPost类
在blog目录下的models.py是blog应用的核心文件之一,是定义blog数据结构的地方。

用编辑器打开models.py

新添加BlogPost类,代码如下:

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)

4.2、再次初始化数据库

python manage.py makemigrations blog
python manage.py syncdb

或者

python manage.py migrate

再次runserver启动服务,访问admin后台,创建文章。

4.3、登陆成功选择add 创建博客

输入博客标题,正文、日期时间、点击save 创建博客。

4.4、设置admin 的BlogsPost界面
打开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()

class BlogPostAdmin(admin.ModelAdmin):
list_display = ('title','timestamp')

admin.site.register(BlogsPost,BlogPostAdmin)

创建BlogPostAdmin类,继承admin.ModelAdmin父类,以列表的形式显示BlogPost的标题和时间。

五、创建blog的公共部分

从Django的角度看,一个页面具有三个典型的组件:

一个模板(template):模板负责把传递进来的信息显示出来。
一个视图(view):视图负责从数据库获取需要显示的信息。
一个URL模式:它负责把收到的请求和你的试图函数匹配,有时候也会向视图传递一些参数。

5.1、创建模板

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

{% for post in posts %}
<h2>{{ post.title }}</h2>
<p>{{ post.timestamp }}</p>
<p>{{ post.body }}</p>
{% endfor%}

5.2、创建视图函数

打开mysite/blog/views.py文件:

from django.shortcuts import render
from django.template import loader,Context
from django.http import HttpResponse
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',{'posts':blog_list})

blog_list = BlogPost.objects.all() :获取数据库里面所拥有BlogPost对象
render_to_response()返回一个页面(index.html),顺带把数据库中查询出来的所有博客内容(blog_list)也一并返回。

5.3、创建blog的URL模式

在mysite/urls.py文件里添加blog的url:

from django.conf.urls import url
from django.contrib import admin
from blog.views import index

urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^index/$', index),
]

5.4、再次启动服务($ python manage.py runserver),访问blog应用(http://127.0.0.1:8000/index/)。

如果顺利的话就会看到你刚刚添加的博客。

5.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>
<h3>大人不华,君子务实</h3>
{% block content %}
{% endblock %}
</body>
</html>

修改index.html模板,让它引用base.html模板和它的“content”块。

{% extends "base.html" %}
{% block content %}
{% for post in posts %}
<h2>{{ post.title }}</h2>
<p>{{ post.timestamp | date:"1,F jS"}}</p>
<p>{{ post.body }}</p>
{% endfor %}
{% endblock %}

再次刷新博客页面,就会看到添加了样式之后的页面。

作者:zqifa

出处:https://www.l1mn.com

原文地址:https://www.l1mn.com/p/8zy9i.html

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

分类:pythondjango
标签:djangopython

公告

昵称:zqifa

站龄: 4年2个月

博客持续完善ing,敬请期待...

打滚求打赏(๑ ̄ ̫  ̄๑)

此处弱弱求打赏~~万一有好心人呢~~

支付宝酱

支付宝赞助

微信酱

微信赞助

随笔分类

php(110)

linux(63)

python(44)

web前端(39)

js(35)

服务器(33)

mysql(30)

html(24)

docker(23)

windows(22)

centos(22)

django(20)

前端设计(18)

git(16)

常用软件(14)

数据库(14)

算法(14)

字符编码(13)

编程进阶(13)

笔记(12)

更多

我的标签

php(106)

linux(47)

python(45)

js(34)

mysql(30)

centos(28)

web前端(23)

docker(22)

windows(22)

django(20)

更多

相册

Copyright © zqifa 联系方式:z___qf@163.com