前言

2017-04-01324371 阅读66 评论

Django 是使用 Python 编写的一个开源 Web 框架,可以用它来快速搭建一个高性能的网站。

Django makes it easier to build better Web apps more quickly and with less code.

Django 让你以更快的速度、更少的代码、更轻松的方式搭建更好的 Web 应用。

本教程将带你使用 Django 快速开发属于自己的博客网站。

教程特点

免费、中文、零基础,完整的项目,基于最新版 Django 1.10 和 Python 3.5。带你从零开始一步步开发属于自己的博客网站,帮助你以最快的速度掌握 Django 开发的技巧。

谁适合这个教程

本教程主要面向零基础的 Django 新人。

只需要一点点 Python 语言的基础,就可以顺利阅读本教程。

如果你已有一定的 Django 开发经验,也能从本教程中学到更多的 Django 开发技巧。

在线预览

点击预览:Django 博客项目在线预览

博客项目预览

资源列表

项目完整代码托管在 GitHub:Django Blog Tutorial

博客前端模板托管在 GitHub:博客模板

获取帮助

在项目开发中遇到问题,通过以下方式即时获取帮助。

  • 在下方评论区留言。
  • 将问题的详细描述通过邮件发送至 djangostudyteam@163.com,一般会在 24 小时内答复。
  • Django 学习小组 QQ 群,扫描下方二维码加入。

Django 学习小组 QQ 群二维码

-- EOF --

66 评论
登录后回复
Learn and Live
2019-04-01 10:10:45

既然学习了Python Web怎么能没有自己的一个小站呢?

没有自己精心打造的一个小站怎么敢说自己学习过 Python Web呢?

跟着博主的讲解,我也完成了博客的搭建。

Django后台 + Wordpress主题,只要自己看上的主题都可以让它变成自己的为什么要选择 Wordpress 主题呢?

自己在刚开始学习Python Web时最大的困惑就是:Django后台开发没什么难度,但是想搭起自己的一个站点却难的让我无从下手,什么 HTML、CSS、Jquery、JS、AJAX的前端知识太多,听起来就头大,即使学会了前端技术,你能写出一个自己满意的前端页面吗?

没有一点审美和设计能力,好像并不大行。

当我遇到 Wordpress 时,这一切都变得如此简单,Wordpress社区有丰富的主题,可以挑出自己喜欢的随意摆弄,只需能看懂前端代码即可,加上 Django 类似API式的视图和前端模板语法,简直完美结合。

当初学习 Django 一心想搭起一个自己满意的小站,但始终未完成心愿,了解到 Wordpress 后让我打开了新思路。

我的个人网站 Django1.11 + 崔庆才个人博客 Wordpress 欲思主题搭建:https://www.stormsha.com/

回复
Jacky_github Learn and Live
2020-07-14 09:42:36

能加个友链吗?
https://jackypy.xyz

回复
Learn and Live
2019-04-01 10:07:11

既然学习了Python Web怎么能没有自己的一个小站呢?没有自己精心打造的一个小站怎么敢说自己学习过 Python Web呢?跟着博主的讲解,我也完成了博客的搭建。Django后台 + Wordpress主题,只要自己看上的主题都可以让它变成自己的为什么要选择 Wordpress 主题呢?自己在刚开始学习Python Web时最大的困惑就是:Django后台开发没什么难度,但是想搭起自己的一个站点却难的让我无从下手,什么 HTML、CSS、Jquery、JS、AJAX的前端知识太多,听起来就头大,即使学会了前端技术,你能写出一个自己满意的前端页面吗?没有一点审美和设计能力,好像并不大行。当我遇到 Wordpress 时,这一切都变得如此简单,Wordpress社区有丰富的主题,可以挑出自己喜欢的随意摆弄,只需能看懂前端代码即可,加上 Django 类似API式的视图和前端模板语法,简直完美结合。当初学习 Django 一心想搭起一个自己满意的小站,但始终未完成心愿,了解到 Wordpress 后让我打开了新思路,我的个人网站,是 Django1.11 + 崔庆才个人博客 Wordpress 欲思主题搭建:https://www.stormsha.com/

回复
追梦人物
2019-03-20 11:47:16

测试一下评论运行情况

回复
DocterWhom
2019-03-08 17:22:39

我发现在WIN10-64系统下,CMD命令行没有访问其他盘符的权限,以至于我没法在我已经创建的虚拟环境目录(virtualenvE:Django\Lyn\Envs\blogproject_env)下,创建django工程文件,我不清楚是我操作的问题,还是确实没有权限,当我输出 cd E:\Django\Lyn\Workspace ,没法跳转到该目录下,而我输出C盘文件目录时,能成功跳转:cd C:\GamemakerRes,所以我只好重来一次,安装虚拟环境下自己的C盘目录下了

回复
shishutong DocterWhom
2019-05-09 14:10:36

可以试试用管理员权限。

回复
smithgua
2019-02-22 11:27:14

emmm,每次刷新都会增加阅读量啊,不能记录访问的ip地址吗

回复
googleduo
2019-02-20 12:39:15

看了博主的教程,我也做了一个网站,叫大闸蟹的做法,觉得好多功能实现不了,博主收徒不?

回复
追梦人物 googleduo
2019-02-27 18:44:24

当然呀,但你要个什么样的师父呢

回复
waterwizard
2019-01-16 13:04:01

Test

回复
软妹不太软QAQ
2019-01-09 15:46:57

写的真棒 学到了很多

回复
losetemp
2019-01-03 14:16:15

test

回复
wangganggithub123
2018-12-09 13:31:04



回复
vimtutor
2018-10-29 20:10:06

博主你好,感谢你提供了这么好的教程。小女子个人也维护了一个网站 Vim教程网,专注于写Vim相关的内容。不知道是否可以与你交换友链。多谢多谢~ 

盼复。 

by ayawaw

回复
vimtutor
2018-10-29 20:09:09

博主你好,感谢你提供了这么好的教程。小女子个人也维护了一个网站 Vim教程网,专注于写Vim相关的内容。不知道是否可以与你交换友链。多谢多谢~

盼复。

ayawaw

回复
vimtutor vimtutor
2018-10-29 20:11:02

:(  链接地址写错了,是 https://vim.ink。sorry 

回复
追梦人物 vimtutor
2018-11-24 17:00:44

哇哇,不错呀!当然可以,请先把我的博客 www.zmrenwu.com 加入你的网站首页,然后加我微信验明女子身份      ( • ̀ω•́ )✧

回复
vimtutor 追梦人物
2018-12-12 00:21:11

首页已经加友链了哈,嘿嘿。真的需要加微信验证吗,哈哈哈。微信号不太好直接公开到这里,有没有办法私信呢~

回复
vimtutor 追梦人物
2018-12-29 17:20:27

博主,真要验证微信吗~怎么加你呀

回复
追梦人物 vimtutor
2019-01-03 21:27:45

哈哈,开玩笑的,你可以在知乎私信我,我的所有昵称都是这个

回复
vimtutor 追梦人物
2019-01-19 00:16:56

已经私信啦,嘿嘿

回复
Kingoldman
2018-10-24 10:54:21


回复
口可口可可乐杯
2018-10-05 14:25:14

请问一下在运行时遇到这个问题怎么解决呢

ImportError: No module named 'covers'

万分感谢

回复
asimovezh
2018-09-03 13:51:56

gggg

回复
DavidLin3
2018-07-09 09:08:07

It's a test...

回复
Huangbo
2018-07-06 20:57:48

回复
hualibukenni
2018-05-29 23:36:10

博主,这个提示是指我的本地仓库与远程仓库没合并还是什么原因?

[www.lhyaiwh.top] out: error: Your local changes to the following files would be overwritten by merge:[www.lhyaiwh.top] out: templates/base.html 

 [www.lhyaiwh.top] out: Please, commit your changes or stash them before you can merge.

 [www.lhyaiwh.top] out: Aborting 

 [www.lhyaiwh.top] out: Fatal error: run() received nonzero return code 1 while executing! 

 Requested: cd /home/liuhanyu/sites/demo.lhyaiwh.top/blogproject && git pullExecuted: /bin/bash -l -c "cd /home/liuhanyu/sites/demo.lhyaiwh.top/blogproject && git pull"

 Aborting.Disconnecting from www.lhyaiwh.top:29490... done.

回复
追梦人物 hualibukenni
2018-06-26 16:53:30

嗯呐 合并有冲突,先本地解决

回复
Butonix
2018-05-19 13:09:53

sadasdasd

回复
iheyou
2018-05-07 13:55:57
window.addEventListener('load', function() {
  console.log('window loaded');
});
回复
zeyuan huang
2018-02-13 15:16:18

test

回复
ArsistPdtion zeyuan huang
2018-06-01 14:11:13

test

回复
mar-heaven
2018-02-12 09:49:50

https://www.zmrenwu.com/post/50/    post/100/的时候没有内容,建议停留在当前页面,不做跳转。

回复
追梦人物 mar-heaven
2018-04-16 11:56:57

返回 404 是标准做法。

回复
Kaijien
2018-02-07 00:10:11

测试

回复
Johnny Z Kaijien
2018-03-22 22:55:07

测试

测试

测试测试


测试







回复
Johnny Z Johnny Z
2018-03-22 22:56:10
123
456
789
回复
zjw
2018-01-11 14:50:24

多少度

回复
不言寂寞666
2017-12-26 23:52:18

博主,到最后一步出问题了,这是啥问题啊?

(django_env) C:\Users\Administrator\Desktop\mypro\blogproject>python manage.py rebuild_indexTraceback (most recent call last):  File "manage.py", line 15, in <module>    execute_from_command_line(sys.argv)  File "C:\Users\Administrator\django_env\lib\site-packages\django\core\management\__init__.py", line 371, in execute_from_command_line    utility.execute()  File "C:\Users\Administrator\django_env\lib\site-packages\django\core\management\__init__.py", line 365, in execute    self.fetch_command(subcommand).run_from_argv(self.argv)  File "C:\Users\Administrator\django_env\lib\site-packages\django\core\management\base.py", line 288, in run_from_argv    self.execute(*args, **cmd_options)  File "C:\Users\Administrator\django_env\lib\site-packages\django\core\management\base.py", line 335, in execute    output = self.handle(*args, **options)  File "C:\Users\Administrator\django_env\lib\site-packages\haystack\management\commands\rebuild_index.py", line 36, in handle    call_command('clear_index', **options)  File "C:\Users\Administrator\django_env\lib\site-packages\django\core\management\__init__.py", line 133, in call_command    ', '.join(sorted(valid_options)),TypeError: Unknown option(s) for clear_index command: batchsize, workers. Valid options are: commit, help, interactive, no_color, nocommit, noinput, pythonpath, settings, skip_checks, stderr, stdout, traceback, using, verbosity, version.

回复
薛鹏飞 不言寂寞666
2018-01-26 13:27:34

哥们,你的这个问题解决了吗,我也遇到了同样的问题  不知道如何解决

回复
曼老三家
2017-12-17 20:52:22

你好,我想实现类似于你的这个博客的“归档”功能,归档是一个单独页面,按照年/月进行归档,并且在月的归档下显示当月所有文章的标题,但是我目前没有了思路,能够按照年/月来归档,可是不能够取出当月每篇文章的数据,无法显示文章标题。

# views.py
def archives(request):
    dates = Article.objects.dates("created_time", "month", order="DESC")  
    context = {"dates": dates}
    return render(request, "blog/lw-timeline.html", context)


# archive.html
<div class="am-u-sm-12">        
  <h1 class="blog-text-center">-- 归档 --</h1>        
  {% regroup dates by year as date_by_year %}
    {% for date_by_month in date_by_year  %}
      <div class="timeline-year">                
        <h1>{{ date_by_month.grouper }}</h1>                
        <hr>               
        <ul>                    
         {% for date_month in date_by_month.list %}
            <h3>{{ date_month | date:"m"}} 月</h3>                        
            <hr>                     
            <li>
              <span class="am-u-sm-4 am-u-md-2 timeline-span">文章标题</span>
            </li>               
         {% endfor %}
        </ul>                
        <br>            
       </div>        
  {% endfor %}
  <hr>
</div>

最终想实现类似:https://www.zmrenwu.com/archives/ 这个页面效果。
还是有时间的话解答下,多谢!

回复
追梦人物 曼老三家
2017-12-19 20:03:53

这篇文章就说啦:https://www.zmrenwu.com/post/54/

回复
曼老三家 追梦人物
2017-12-19 21:21:23

多谢,问题解决了。

回复
未懂世故幻想世态
2017-12-06 00:46:43

哈哈感觉这个前言有廖老师的风格,刚学django,学到分页器那想解决数据量大的时候页码的问题,看到你的博客文章,支持你一下!

回复
liyang
2017-11-12 13:07:50

测试用

回复
nikoals liyang
2019-02-13 22:56:26

0

回复
安羽说_要幸福
2017-10-29 20:36:40

请问可以转载吗? 会注明出处。

回复
SeaTimeMoon
2017-10-14 23:06:07

发错误位置了。

回复
SeaTimeMoon
2017-10-14 23:04:43

Error during template rendering In template D:\PythonWork\Django_Blog\templates\blog\detail.html, error at line 117 no such column: comments_comment.text

反复检查还是如此,说是detail.html有错。

  {% for comment in comment_list %}

回复
皮皮欧呢
2017-09-21 21:19:58

博主,为什么我的总是dial tcp  公IP:80: i/o timeout

回复
小糖豆和奇奇
2017-09-18 16:04:49

测试

回复
唐波
2017-09-08 19:01:08

目前正在学习Django,感谢博主分享。

回复
白羊木鱼水星
2017-09-08 00:32:00

<a href="{{ post.get_absolute_url }}">{{ post.title }}</a>

这里报如下这个错误

django.urls.exceptions.NoReverseMatch: Reverse for 'detail' with keyword arguments '{'pk': 2}' not found. 1 pattern(s) tried: ['$post/(?P<pk>[0-9]+)/$']

请问这个错误是没是原因啊

回复
Alic-yuan
2017-09-01 10:29:43

显得要高大上些

回复
Annihilater Alic-yuan
2017-09-05 08:48:16

???

回复
Annihilater Annihilater
2017-09-05 08:48:30

测试用,不用回复

回复
切了特空
2017-08-30 16:31:16

哇 改版了!

回复
追梦人物 切了特空
2017-08-30 16:47:46

是呀!换了套 UI

回复
刘智彬会灰
2017-06-25 01:38:14

试试看日期是怎么回事

回复
追梦人物 刘智彬会灰
2017-06-26 11:21:28

什么日期哦?

回复
刘智彬会灰 追梦人物
2017-06-26 17:39:52

没什么,只是评论不显示确切日期,我的强迫症有点犯了

回复
sanyuwen
2017-05-13 09:30:53

UnicodeDecodeError at /blog/
'utf-8' codec can't decode byte 0xcd in position 2616: invalid continuation byte

请问,我按照你的教程操作,runserver的时候,报错在这一行:

django版本和你一样,python 3.6

回复
追梦人物 sanyuwen
2017-05-13 10:04:49

可能是 base.html 编码的问题,尝试重新保存该文件为 utf-8 的编码格式。

回复
sanyuwen 追梦人物
2017-05-13 10:30:10

谢谢!已经解决。
我最开始也是这么想的,重新改成utf-8没解决。
后来仔细检查文件,原来在某处莫名其妙有一个特殊字符,删掉就可以了。。

回复
william302 sanyuwen
2018-06-07 11:57:01

测试

回复
邵彬之梦 william302
2019-02-25 22:05:37

TEST

回复