Django开发简单Blog系统——中

文章目录
  1. 1. 系统功能
  2. 2. 后台管理
  3. 3. 页面开发
    1. 3.1. 主页面
    2. 3.2. 静态资源
    3. 3.3. 查看博客页面
    4. 3.4. 添加博客页面
    5. 3.5. 修改博客页面
    6. 3.6. 删除博客
    7. 3.7. 查找博客
  4. 4. 效果演示
  5. 5. 源码分享
  6. 6. 书签

系统功能

1、博客列表展示
2、新增博客、修改博客、删除博客、搜索博客
3、后台管理

后台管理

django自带后台管理系统Admin,被授权的用户可以直接在后台管理系统中操作数据库。同时,我们可以按照需求对Admin进行定制。

1、创建超级用户
python manage.py createsuperuser
根据提示,输入用户名、邮箱、密码。

2、测试访问
访问地址 http://localhost:8000/admin/ ,输入用户名密码,登录后台管理系统。

3、改成中文
后台管理系统,默认是英文的,修改settings.py:

1
2
# LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'zh-hans'

刷新后台管理页面,发现变成了中文。

4、注册model
此时,我们在后台管理中看不到article等表数据,要想显示数据,需要在blog/admin.py中注册model。

1
2
3
4
5
6
7
from django.contrib import admin
from . import models

# Register your models here.


admin.site.register(models.Article)

刷新后台管理页面,发现article表已经出现。

5、点击进入Articles,发现里面有很多Article Object,因为我们在blog/models.py中添加了__str__方法,所以显示的名称是文章标题。

1
2
def __str__(self):
return self.title

页面开发

主页面

1、在blog/urls.py中配置路由

1
2
url(r'^$', views.index, name='index'),
url(r'^index$', views.index, name='index'),

2、在blog/views.py中修改index方法

1
2
3
def index(request):
articles = models.Article.objects.all()
return render(request, 'blog/index.html', {'articles': articles})

3、修改blog/templates/blog/index.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>首页</title>
</head>
<body>
<h2>博客列表</h2>
<div class="menu">
<input class="search-input" type="text">
<span class="search">搜索</span>
<a class="add" href="/blog/toadd">添加</a>
</div>
<table>
<thead>
<th>博客标题</th>
<th>发布时间</th>
<th>操作</th>
</thead>
<tbody>
{% for article in articles %}
<tr data-id="{{article.id}}">
<td><a href="/blog/{{article.id}}">{{article.title}}</a></td>
<td>{{article.pub_time}}</td>
<td>
<span class="del">删除</span>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</body>
</html>

4、测试访问
访问地址 http://localhost:8000/bloghttp://localhost:8000/blog/index

静态资源

blog/index.html中,没有添加样式。接下来,我们修改一下项目结构,把样式表放在静态资源目录中。参考DJango 1.8 配置静态资源文件可访问Django 静态文件

1、新建djsite/static/css层级目录,在css下新建index.css,内容参见源码分享。

2、在settings.py中添加

1
2
3
4
5
6
# 设置STATIC_URL为存储静态文件的路径(基于根目录)
STATIC_URL = '/static/'
# 配置存储静态文件的路径映射值,这个值用于模版引用路径的转换
STATICFILES_DIRS = (
os.path.join(BASE_DIR, "static"),
)

3、修改blog/index.html为:

1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
{% load staticfiles %}
<link rel="stylesheet" href="{%static 'css/index.css'%}">
<title>首页</title>
</head>
<body>
<!--不变-->
</body>
</html>

查看博客页面

1、在blog/urls.py中添加:

1
url(r'^(?P<article_id>[0-9]+)$', views.detail, name='detail'),

2、在blog/views.py中添加方法:

1
2
3
4
def detail(request,article_id):
article = models.Article.objects.get(pk=article_id)
return render(request, 'blog/article.html',
{'article': article})

3、在blog/templates/blog中添加article.html:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
{% load staticfiles %}
<link rel="stylesheet" href="{%static 'css/article.css'%}">
<title>{{article.title}}</title>
</head>
<body>
<h2>{{article.title}}</h2>
<div>
<p>{{article.content}}</p>
</div>
<div>
<a class="edit" href="/blog/toedit/{{article.id}}">编辑</a>
</div>

</body>
</html>

4、测试访问
访问地址 http://localhost:8000/blog/1

添加博客页面

1、在blog/urls.py中添加:

1
url(r'^toadd$', views.toadd, name='toadd'),

2、在blog/views.py添加方法:

1
2
def toadd(request):
return render(request, 'blog/add.html')

3、在blog/templates/blog中添加add.html:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>添加博客</title>
</head>
<body>
<form action="/blog/add" method="post">
<p>
<label for="title">标题</label>
<input id="title" name="title" type="text">
</p>

<p>
<label for="content">内容</label>
<textarea id="content" name="content" id="" cols="30" rows="10"></textarea>
</p>
<p>
<input type="submit" value="确定">
</p>
</form>
</