knowman平台搭建:使用django搭建blog

参考:

http://my.oschina.net/matrixchan/blog/184445

 

一.创建项目knowman

django-admin.py startproject knowman

目录如下:

[root@iZ94nil6ddfZ knowman]# tree

.

├── knowman

   ├── __init__.py

   ├── settings.py

   ├── urls.py

   └── wsgi.py

└── manage.py

一.运行开发服务器

 

[root@iZ94nil6ddfZ knowman]# python manage.py runserver

Performing system checks...

 

System check identified no issues (0 silenced).

 

You have unapplied migrations; your app may not work properly until they are applied.

Run 'python manage.py migrate' to apply them.

 

September 04, 2015 - 13:37:28

Django version 1.8.4, using settings 'knowman.settings'

Starting development server at http://127.0.0.1:8000/

Quit the server with CONTROL-C.

^C[root@iZ94nil6ddfZ knowman]# python manage.py migrate

Operations to perform:

  Synchronize unmigrated apps: staticfiles, messages

  Apply all migrations: admin, contenttypes, auth, sessions

Synchronizing apps without migrations:

  Creating tables...

    Running deferred SQL...

  Installing custom SQL...

Running migrations:

  Rendering model states... DONE

  Applying contenttypes.0001_initial... OK

  Applying auth.0001_initial... OK

  Applying admin.0001_initial... OK

  Applying contenttypes.0002_remove_content_type_name... OK

  Applying auth.0002_alter_permission_name_max_length... OK

  Applying auth.0003_alter_user_email_max_length... OK

  Applying auth.0004_alter_user_username_opts... OK

  Applying auth.0005_alter_user_last_login_null... OK

  Applying auth.0006_require_contenttypes_0002... OK

  Applying sessions.0001_initial... OK

[root@iZ94nil6ddfZ knowman]# python manage.py runserver

Performing system checks...

 

System check identified no issues (0 silenced).

September 04, 2015 - 13:38:14

Django version 1.8.4, using settings 'knowman.settings'

Starting development server at http://127.0.0.1:8000/

Quit the server with CONTROL-C.

这里默认会使用127.0.0.1:8000

我们这里加上IP

 

 

 

^C[root@iZ94nil6ddfZ knowman]# python manage.py runserver 112.74.206.36:8000

Performing system checks...

 

System check identified no issues (0 silenced).

September 04, 2015 - 13:42:33

Django version 1.8.4, using settings 'knowman.settings'

Starting development server at http://112.74.206.36:8000/

Quit the server with CONTROL-C.

[04/Sep/2015 13:42:44] "GET / HTTP/1.1" 200 1767

[04/Sep/2015 13:42:44] "GET /favicon.ico HTTP/1.1" 404 1941

 

浏览器上显示:

该IP为公网IP


一.创建blog应用

 

# python manage.py startapp blog

二.设计你的Model

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

用编辑器打开models.py

新添加BlogPost类,代码如下:

 

[root@iZ94nil6ddfZ blog]# pwd

/usr/lib/python2.7/site-packages/django/bin/knowman/blog

[root@iZ94nil6ddfZ blog]# cat models.py 

from django.db import models

 

# Create your models here.

class BlogPost(models.Model):

    title = models.CharField(max_length = 150)

    body = models.TextField()

    timestamp = models.DataTimeField()

 

BlogPost类是django.db.models.Model的一个子类 。它有变量title(blog的标题),body(blog的内容部分),timestamp(blog的发表时间)。

设置数据库

 Dajango支持主流的数据库服务器(MySQL,PostgreSQL,Oracle和MSSQL),但本项目使用SQLite,这里之需要通过一条简单的命令可以创建SQLite数据库。

创建数据库:

切换到工程主目录knowledge/下,执行如下命令:

python manage.py syncdb

 

[root@iZ94nil6ddfZ knowman]# python manage.py syncdb

/usr/lib/python2.7/site-packages/django/core/management/commands/syncdb.py:24: RemovedInDjango19Warning: The syncdb command will be removed in Django 1.9

  warnings.warn("The syncdb command will be removed in Django 1.9", RemovedInDjango19Warning)

 

Operations to perform:

  Synchronize unmigrated apps: staticfiles, messages

  Apply all migrations: admin, contenttypes, auth, sessions

Synchronizing apps without migrations:

  Creating tables...

    Running deferred SQL...

  Installing custom SQL...

Running migrations:

  No migrations to apply.

 

You have installed Django's auth system, and don't have any superusers defined.

Would you like to create one now? (yes/no): yes

Username (leave blank to use 'root'): 直接回车

Email address: [email protected]

Password:    密码

Password (again): 密码

Superuser created successfully.

[root@iZ94nil6ddfZ knowman]# 

 

这里多出来一个db.sqlite3

 

[root@iZ94nil6ddfZ knowman]# pwd

/usr/lib/python2.7/site-packages/django/bin/knowman

[root@iZ94nil6ddfZ knowman]# ls

blog  db.sqlite3  knowman  manage.py

 

六,设置自动admin应用

1,打开/usr/lib/python2.7/site-packages/django/bin/knowman/knowman/urls.py,取消注释url(r'^admin/', include(admin.site.urls))

2,编辑/usr/lib/python2.7/site-packages/django/bin/knowman/knowman/settings.py,在INSTALLED_APPS里面添加blog应用。

添加后的代码如下:

INSTALLED_APPS = (

    'django.contrib.admin',

    'django.contrib.auth',

    'django.contrib.contenttypes',

    'django.contrib.sessions',

    'django.contrib.messages',

    'django.contrib.staticfiles',

    'blog',

)

 

3. ,修改/usr/lib/python2.7/site-packages/django/bin/knowman/blog/models.py

在最后添加一行代码:

[root@iZ94nil6ddfZ blog]# cat models.py 

from django.db import models

from django.contrib import admin

 

# Create your models here.

class BlogPost(models.Model):

    title = models.CharField(max_length = 150)

    body = models.TextField()

    timestamp = models.DataTimeField()

 

admin.site.register(BlogPost)

七.登录验证

输入:http://112.74.206.36:8000/admin/ 试试

knowman平台搭建:使用django搭建blog_第1张图片

试用admin

1 点击Blog Posts右侧的Add 按钮,添加一个帖子。

knowman平台搭建:使用django搭建blog_第2张图片

这里点击右下角save后出错:

knowman平台搭建:使用django搭建blog_第3张图片

应该是还没添加这个方法,先向下走,按照参考博客继续做

2,让admin的BlogPost界面更加美观

修改blog应用的models.py,为它添加一个admin.ModelAdmin的子类BlogPostAdmin.以列表形式显示BlogPost的标题和时间。

[root@iZ94nil6ddfZ blog]# vi models.py

 

from django.db import models

from django.contrib import admin

 

# Create your models here.

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)

八,建立Blog的公共部分

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

一个模板(template):模板负责把传递进来的信息显示出来。

一个视图(viw):视图负责从数据库获取需要显示的信息。

一个URL模式:它负责把收到的请求和你的试图函数匹配,有时候也会向视图传递一些参数。

 1,创建模板

    在blog目录下建立template目录(knowman/blog/templates),创建模板文件archive.html,它的内容如下:

 

[root@iZ94nil6ddfZ templates]# vi archive.html

{% for post in posts %}

<h2>{{ post.title }}</h2>

<p>{{ post.timestamp }}</p>

<p>{{ post.body }}</p>

{% endfor%}

 2,创建一个视图函数

在app应用的目录下knowman/blog的view.py添加视图函数

 

[root@iZ94nil6ddfZ blog]# pwd

/usr/lib/python2.7/site-packages/django/bin/knowman/blog

[root@iZ94nil6ddfZ blog]# cat views.py   

from django.shortcuts import render

from django.template import loader,Context

from django.http import HttpResponse

from blog.models import BlogPost

# Create your views here.

def archive(request):

    posts = BlogPost.objects.all()

    t = loader.get_template("archive.html")

    c = Context({'posts':posts})

    return HttpResponse(t.render(c))

[root@iZ94nil6ddfZ blog]# 

3,创建一个URL模式

第一步,在knowman/urls.py里面取消下面的一行注释:

[root@iZ94nil6ddfZ knowman]# pwd

/usr/lib/python2.7/site-packages/django/bin/knowman/knowman

[root@iZ94nil6ddfZ knowman]# cat urls.py

from django.conf.urls import include, url

from django.contrib import admin

urlpatterns = [

    url(r'^blog/', include('blog.urls'))

]

[root@iZ94nil6ddfZ knowman]# 

第二步:在blog应用里面定义URL,创建一个urls.py(mysite/blog/urls.py)

同样出现:

knowman平台搭建:使用django搭建blog_第4张图片

这个问题后面再排查,不知道是不是django的版本问题

原作者的视频:http://www.testpub.cn/blog/


你可能感兴趣的:(knowman平台搭建:使用django搭建blog)