zoukankan      html  css  js  c++  java
  • 实战Django:简易博客Part1

    舍得学习新技能的时候,通常不喜欢傻读书——捧着一本阐述该项技能的书籍,然后傻看,一路看下来,脑子里塞满了新的概念、知识点,头是越来越大,但技能却几乎没掌握半分。

    多年来,舍得养成了用做实例来学习新技能的习惯。这可不是舍得的独创,在象棋、围棋界中,历来有“打谱”一说,就是根据棋谱,把一步步棋摆出来,在打谱的过程中,去感悟、去吸收,此时感悟到的、吸收进的,才是属于你自己的东西。新的技能就这样一步步发展起来,逐渐壮大。

    就象Django官方文档那样,一个实例看起来很简单,但作为初学者,用”打谱“的方式一遍遍去做这个实例,比起将书拿起来从头看到尾的傻读书,进步速度何止高出一两倍?

    所以在介绍新技能的书籍中,舍得偏爱那些用实例来传道、授业、解惑的书。

    《Django WEB开发指南》(《Python Web Development with Django》)是为数不多的Django精品书籍之一,出版于2009年,并于同年被引入国内,由机械工业出版社出版。这本书中绝大部分篇幅用实例来讲解Django的使用,恰好是舍得欣赏的类型。遗憾的是当时所用的Django是1.0版,代码上和我们现在用的Django 1.7.1有一定的差异。对于新人来说,实践起来颇为费事。舍得将书中的实例重新整理,用Django 1.7.1的标准来修正其中的代码,以方便初学者利用这些实例来学习Django。

    今天舍得要讲的,便是该书中的第一个实例:blog.这个实例非常简单,基本的操作与官方实例很相近,我们可以通过这个实例来复习一下前面学到的知识。

    0.上路之前


    舍得强烈建议大家动手来逐一完成本实例的细节。如果你第一次接触Django,建议先做舍得在《实战Django:官方实例》系列中的实例,那里介绍了Django中最基本的技术。

    在做实例的过程中,如果你遇到和你在这里看到的结果不同的情况时,请停下来检查刚才的步骤,然后复查之前的两到三步。看看是不是有哪些看起来不太重要的地方,或哪些不能理解的步骤遗漏掉了。如果还是没有发现,不如删掉整个项目从头开始做,这个方法非常管用。

    1.创建项目和应用


    我们先来创建本实例的项目,在dos命令提示符下转到Scripts文件夹(如“c:python32Scripts”),然后运行如下命令:

    $ django-admin startproject blogproject

    没有任何错误提示的话,说明项目创建成功了,然后在dos命令提示符下继续输入命令,进入项目文件夹:

    cd blogproject

    开始创建应用,在dos命令提示符下输入命令:

    $ python manage.py startapp blog

    命令执行完后,blogproject文件夹下会多出一个叫blog的文件夹,应用就建好了。

    2.建立模型


    编辑blog/models.py文件,象下面这样:

    blog/models.py:

    from django.db import models
    
    class BlogPost(models.Model):
        title = models.CharField(max_length=150)
        body = models.TextField()
        timestamp = models.DateTimeField()
    
        class Meta:
            ordering = ('-timestamp',)

    3.激活模型


    首先修改blogproject/settings.py这个文件,找到INSTALLED_APPS这段设置,把它改成下面这个样子:

    blogproject/settings.py:

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

    编辑settings.py的时候,建议顺便修改一下语言和时区的设置,具体的方法请参考:《实战Django:官方实例Part1》

    然后在dos命令提示符下运行如下命令:

    $ python manage.py makemigrations blog

    继续在dos命令提示符下运行命令:

    $ python manage.py migrate

    这样,就把数据库建好了。

    4.创建管理员账号


    在dos命令提示符下运行如下命令:
    $ python manage.py createsuperuser

    然后依次输入admin,你的邮箱,输入两次密码,完成创建管理员的操作。

    5.在管理界面注册应用


    编辑blog/admin.py 文件,让它变成下面这个样子:

    blog/admin.py

    from django.contrib import admin
    from blog.models import BlogPost
    
    admin.site.register(BlogPost)

    6.启动服务器


    在dos命令提示符下运行如下命令:

    $ python manage.py runserver

    命令执行后,你会看到类似这样的字符出现:

    December 07, 2014 - 18:56:24
    Django version 1.7.1, using settings 'blogproject.settings'
    Starting development server at http://127.0.0.1:8000/
    Quit the server with CTRL-BREAK.

    这就表示服务器已经成功启动了.

    我们先访问一下管理界面,打开浏览器,在地址栏内输入:

    然后输入你刚才创建的管理员账号和密码,登录管理界面,你会看到下面这样的画面:

    1

    如果你看到的和这里显示的不一样,请返回检查前面的操作。

    Tips:
    三个最常见的”在管理界面看不到我的应用“的原因:
    1.没有在应用的admin.py中注册应用的模型;
    2.应用的模型配置错误;
    3.忘记往项目的aettings.py的INSTALLED_APPS添加你的应用;
    7.添加文章  

    点击Blog posts右侧的“增加”按钮,管理界面会显示一个表单,让你用来添加文章:

    2

    往里填写一些内容试试,填完后点击”保存“按钮。

    3

    你会收到一个确认消息:“BlogPost object”添加成功。同时Django会列出你的文章列表,目前只有一篇文章。

    再次看到象BlogPost object这样的难看名字,回忆一下我们在《实战Django:官方实例Part2》中是怎么处理的?

    编辑blog/admin.py 文件,让它变成下面这个样子:

    blog/admin.py

    from django.contrib import admin
    from blog.models import BlogPost
    
    class BlogPostAdmin(admin.ModelAdmin):
        list_display = ('title', 'timestamp')
    
    admin.site.register(BlogPost, BlogPostAdmin)

    刷新一下浏览器,我们可以看到:

    4

    在这里,我们可以用在官方实例里学到的技能,给管理页面增加搜索、自定义排序、过滤等功能。舍得不再就这些问题一一讲解,大家自行练习吧。

    【未完待续】

    本文版权归舍得学苑所有,欢迎转载,转载请注明作者和出处。谢谢!
    作者:舍得
    首发:舍得学苑@博客园

  • 相关阅读:
    李洪强IOS经典面试题 33-计算有多少个岛屿
    李洪强iOS经典面试题32-简单介绍 ARC 以及 ARC 实现的原理
    李洪强iOS经典面试题31-解释垃圾回收的原理
    iOS音频合并
    Macbook小问题
    weex-iOS集成
    WEEX快速入门
    Mac上Nginx-增加对HLS的支持
    iOS直播-基于RTMP的视频推送
    iOS直播-播放基于RTMP协议的视频
  • 原文地址:https://www.cnblogs.com/emagic/p/4149716.html
Copyright © 2011-2022 走看看