码迷,mamicode.com
首页 > 其他好文 > 详细

Django创建一个简单的blog

时间:2016-04-29 23:44:12      阅读:285      评论:0      收藏:0      [点我收藏+]

标签:

1. 使用django-admin.py 创建mysite项目

sunny@sunny-ThinkPad-T450:~/PycharmProjects$ django-admin.py startproject mysite

2. 进入项目目录中,启动服务器,测试连通性

sunny@sunny-ThinkPad-T450:~/PycharmProjects$ cd mysite/
sunny@sunny-ThinkPad-T450:~/PycharmProjects/mysite$ ./manage.py runserver 0.0.0.0:8000
Validating models...

0 errors found
April 29, 2016 - 06:20:27
Django version 1.6.5, using settings mysite.settings
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.
[29/Apr/2016 06:20:33] "GET / HTTP/1.1" 200 1757

3. 创建blog应用

sunny@sunny-ThinkPad-T450:~/PycharmProjects/mysite$ ./manage.py startapp blog
sunny@sunny-ThinkPad-T450:~/PycharmProjects/mysite$ tree
.
├── blog
│   ├── admin.py
│   ├── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
├── manage.py
└── mysite
    ├── __init__.py
    ├── __init__.pyc
    ├── settings.py
    ├── settings.pyc
    ├── urls.py
    ├── urls.pyc
    ├── wsgi.py
    └── wsgi.pyc

2 directories, 14 files

4. 告诉Django这个app是项目的一部分,编辑setting.py配置文件

INSTALLED_APPS = (
   django.contrib.auth,
django.contrib.admin,django.contrib.contenttypes, django.contrib.sessions, django.contrib.messages, django.contrib.staticfiles, blog, #添加的部分,注意后面的,号 )

5. 设计Model

基于Django的blog应用的核心部分:models.py。这是定义blog数据结构的地方。根据DRY(代码不重复)原则,Django会尽量利用你提供给应用程序的model信息。

5.1 在blog包下的models.py下编写下面代码:设置了3个变量,有一个默认的id变量,是自增的。(其实就是数据库列)

from django.db import models

class BlogPost(models.Model):
    title = models.CharField(max_length=150)
    body = models.TextField()
    timestamp = models.DateTimeField()

5.2 设置数据库(使用的是MySQL)

Django中默认使用的是SQLite,我在这里使用的是MySQL,则需要在配置文件中修改数据库的基本信息(首先创建数据库,名为djangodb):

DATABASES = {
    default:{
        ENGINE:django.db.backends.mysql,
        NAME:djangodb,
        USER:root,
        PASSWORD:××××××,#连接数据库服务器的密码
        HOST:localhost,
        PORT:3306,
    }
}

5.3 创建表

sunny@sunny-ThinkPad-T450:~/PycharmProjects/mysite$ ./manage.py syncdb

技术分享

当执行syncdb命令时,Django会查找INSTALLED_APPS里的每一个models.py文件,并为找到的每一个model都创建一张数据表。对照上图与配置文件INSTALLED_APPS中的参数,可以看到syncdb为每一个app都创建了一个或多个表。

syncdb命令的输出除了上图,还有

You just installed Djangos auth system, which means you dont have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (leave blank to use sunny): 
Email address: 
Password: 
Password (again): 
Superuser created successfully.
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)

这才是完整输出。这之后,我在auth系统里建立了一个超级用户,便于加入Django的自动admin应用。

5.4 设置自动admin应用

  自动化的后台应用程序admin称得上是Django的明珠,为WEB应用创建简单CRUD接口的福音。由于这不是Django里的必要组件,则必须在setting.py文件里指定使用它。需要在INSTALLED_APPS元组里的‘django.contrib.auth‘下面添加一行‘django.contrib.admin‘;

  每次往项目中添加新的应用后,都要运行一下syncdb命令以确保它所需的表已经在数据库里创建。

  查看urls.py里的代码:

from django.conf.urls import patterns, include, url

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns(‘‘,
    # Examples:
    # url(r‘^$‘, ‘mysite.views.home‘, name=‘home‘),
    # url(r‘^blog/‘, include(‘blog.urls‘)),

    url(r^admin/, include(admin.site.urls)), #告诉Django去加载默认的admin站点,这是被用于contrib admin应用程序的一个特殊对象。
)

   之后,需要将编辑的应用程序告诉Django要在admin窗口里显示哪一个model以供编辑。编辑blog中models.py中的代码,只需要定义之前提到的默认admin站点,并向其注册BlogPost model就行:

from django.db import models
from django.contrib import admin

class BlogPost(models.Model):
    title = models.CharField(max_length=150)
    body = models.TextField()
    timestamp = models.DateTimeField()

admin.site.register(BlogPost)

6. 使用admin

运行./manage.py runserver 命令,然后在浏览器里输入http://127.0.0.1:8000/admin/,则会出现一个登陆窗口

技术分享

使用超级用户的用户名和密码登陆之后,会出现下面的界面:

技术分享

点击BlogPost后面的添加,里面会出现model中的三个元素title、 body、timestampe,添加完后点击save;

在models.py文件里再添加一个BlogPostAdmin类,并将它添加到注册代码中去:

from django.db import models
from django.contrib import admin

class BlogPost(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(BlogPost,BlogPostAdmin)

技术分享

根据BlogPostAdmin类中的list_display变量(title,timestamp)来生成输出;

7. 建立Blog的公共部分

这部分是面向公众的页面部分。从Django的角度来说,一个页面具有三个典型的组件:

  • 一个模板(template),负责将传递进来的信息显示出来(用一种类似Python字典的对象Context)。
  • 一个视图(view),负责获取要显示的信息,通常都是从数据库里取得。
  • 一个URL模式,用来把收到的请求和视图函数匹配,有时会向视图传递一些参数。

7.1 创建模板(template)

 

Django创建一个简单的blog

标签:

原文地址:http://www.cnblogs.com/coffy/p/5447811.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!