参考:
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/ 试试
试用admin
1 点击Blog Posts右侧的Add 按钮,添加一个帖子。
这里点击右下角save后出错:
应该是还没添加这个方法,先向下走,按照参考博客继续做
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)
同样出现:
这个问题后面再排查,不知道是不是django的版本问题
原作者的视频:http://www.testpub.cn/blog/