django快速搭建blog系统

时间:2020-11-29 19:19:30
 一、Django的使用

创建一个工程
[root@llmj-svn-26-108 django-master]# django-admin.py startproject mysite
[root@llmj-svn-26-108 mysite]# lltotal 8-rwxrwxr-x 1 root root  804 Dec 23 13:34 manage.pydrwxr-xr-x 2 root root 4096 Dec 23 13:34 mysite
生成以下文件
[root@llmj-svn-26-108 mysite]# lltotal 12-rw-rw-r-- 1 root root    0 Dec 23 13:34 __init__.py-rw-rw-r-- 1 root root 3087 Dec 23 13:34 settings.py-rw-rw-r-- 1 root root  762 Dec 23 13:34 urls.py-rw-rw-r-- 1 root root  389 Dec 23 13:34 wsgi.py
manage.py ----- Django项目里面的工具,通过它可以调用django shell和数据库等。settings.py ---- 包含了项目的默认设置,包括数据库信息,调试标志以及其他一些工作的变量。urls.py ----- 负责把URL模式映射到应用程序。

创建blog应用                                                                                                   
在mysite目录下创建blog应用
[root@llmj-svn-26-108 mysite]# py manage.py startapp blogTraceback (most recent call last):  File "/usr/local/lib/python3.5/site-packages/Django-1.11-py3.5.egg/django/db/backends/sqlite3/base.py", line 30, in <module>    from pysqlite2 import dbapi2 as DatabaseImportError: No module named 'pysqlite2'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):  File "/usr/local/lib/python3.5/site-packages/Django-1.11-py3.5.egg/django/db/backends/sqlite3/base.py", line 32, in <module>    from sqlite3 import dbapi2 as Database  File "/usr/local/lib/python3.5/sqlite3/__init__.py", line 23, in <module>    from sqlite3.dbapi2 import *  File "/usr/local/lib/python3.5/sqlite3/dbapi2.py", line 27, in <module>    from _sqlite3 import *http://hunt1574.blog.51cto.com/1390776/1630974

ImportError: No module named '_sqlite3'http://linux.softpedia.com/get/Database/Database-Engines/?utm_source=spd&utm_campaign=postd  下载一个高版本的 
wget http://www.sqlite.org/sqlite-3.6.16.tar.gz 
cd sqlite-3.6.16# ./configure --prefix=/usr/local/sqlite3# make && make install
也可以用yum安装: yum install readline-devel tk-devel tcl-devel   openssl-devel  sqlite-devel
注意: 安装完成后要重新编译python
生成了blog的东西:[root@llmj-svn-26-108 mysite]# cd blog[root@llmj-svn-26-108 blog]# lltotal 24-rw-rw-r-- 1 root root   63 Dec 23 14:30 admin.py-rw-rw-r-- 1 root root   83 Dec 23 14:30 apps.py-rw-rw-r-- 1 root root    0 Dec 23 14:30 __init__.pydrwxr-xr-x 2 root root 4096 Dec 23 14:30 migrations-rw-rw-r-- 1 root root   57 Dec 23 14:30 models.py-rw-rw-r-- 1 root root   60 Dec 23 14:30 tests.py-rw-rw-r-- 1 root root   63 Dec 23 14:30 views.py

初始化admin后台数据库
[root@llmj-svn-26-108 blog]# 
python 自带SQLite数据库,Django支持各种主流的数据库,这里为了方便推荐使用SQLite,如果使用其它数据库请在settings.py文件中设置。

1.导入Python SQLITE数据库模块
Python2.5之后,内置了SQLite3,成为了内置模块,这给我们省了安装的功夫,只需导入即可~
import sqlite3
2. 创建/打开数据库在调用connect函数的时候,指定库名称,如果指定的数据库存在就直接打开这个数据库,如果不存在就新创建一个再打开。cx = sqlite3.connect("/data/pydb/blog.db") 
切换到mysite创建数据库:

syncdb
[root@llmj-svn-26-108 mysite]# py manage.py syncdbUnknown command: 'syncdb'  报错了 在Django 1.9及未来的版本种使用migrate代替syscdb.Type 'manage.py help' for usage.
解决: [root@llmj-svn-26-108 mysite]# py manage.py migrateOperations to perform:  Apply all migrations: admin, auth, contenttypes, sessionsRunning migrations:  Applying contenttypes.0001_initial... OK  Applying auth.0001_initial... OK  Applying admin.0001_initial... OK  Applying admin.0002_logentry_remove_auto_add... 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 auth.0007_alter_validators_add_error_messages... OK  Applying auth.0008_alter_user_username_max_length... OK  Applying sessions.0001_initial... OK
创建用户:
[root@llmj-svn-26-108 mysite]# py manage.py createsuperuserUsername (leave blank to use 'root'): rootEmail address: 893229927@qq.comPassword: Password (again): Superuser created successfully.[root@llmj-svn-26-108 mysite]# 
设置admin应用                                                                                    
admin 是Django 自带的一个后台管理系统。1、添加blog应用,打开mysite/mysite/settings.py 文件:

INSTALLED_APPS = [    'django.contrib.admin',    'django.contrib.auth',    'django.contrib.contenttypes',    'django.contrib.sessions',    'django.contrib.messages',    'django.contrib.staticfiles',    'blog',] 2、在我们创建django项目时,admin就已经创建,打开mysite/mysite/urls.py文件:
"""from django.conf.urls import urlfrom django.contrib import admin
urlpatterns = [    url(r'^admin/', admin.site.urls),]~                                      

启动服务:
[root@llmj-svn-26-108 mysite]# py manage.py runserver 0.0.0.0:8000   为了让其他机器也可以访问Performing system checks...
System check identified no issues (0 silenced).December 23, 2016 - 07:15:27Django version 1.11, using settings 'mysite.settings'Starting development server at http://0.0.0.0:8000/Quit the server with CONTROL-C.django快速搭建blog系统
在settings.py文件中设置模式为调试模式(因为我们当前是处于测试环境),并且把当前django所在服务器的ip加入allow_host列表中:
# SECURITY WARNING: don't run with debug turned on in production!DEBUG = TrueALLOWED_HOSTS = ['*']django快速搭建blog系统django快速搭建blog系统
设计Model(即设计数据库表)                                  
1、设计model
现在我们打开blog目录下的models.py文件,这是我们定义blog数据结构的地方。打开mysite/blog/models.py 文件进行修改:

from django.db import modelsfrom django.contrib import admin
# Create your models here.class BlogsPost(models.Model):    title = models.CharField(max_length = 150)    body = models.TextField()    timestamp = models.DateTimeField()
admin.site.register(BlogsPost)

2、 再次初始化数据库
[root@llmj-svn-26-108 mysite]# py manage.py makemigrations blogMigrations for 'blog':  blog/migrations/0001_initial.py    - Create model BlogsPost[root@llmj-svn-26-108 mysite]# 

[root@llmj-svn-26-108 mysite]# py manage.py makemigrations blogMigrations for 'blog':  blog/migrations/0001_initial.py    - Create model BlogsPost[root@llmj-svn-26-108 mysite]#  py manage.py migrateOperations to perform:  Apply all migrations: admin, auth, blog, contenttypes, sessionsRunning migrations:  Applying blog.0001_initial... OK

3、再次runserver启动服务,访问admin后台,创建文章。
  登陆成功选择add 创建博客django快速搭建blog系统django快速搭建blog系统
设置admin 的BlogsPost界面                                                              打开mysite/blog/models.py 文件,做如下修改:
from django.db import modelsfrom django.contrib import admin
# Create your models here.class BlogsPost(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(BlogsPost,BlogPostAdmin)

创建BlogPostAdmin类,继承admin.ModelAdmin父类,以列表的形式显示BlogPost的标题和时间。django快速搭建blog系统
创建blog的公共部分
从Django的角度看,一个页面具有三个典型的组件:一个模板(template):模板负责把传递进来的信息显示出来。一个视图(view):视图负责从数据库获取需要显示的信息。一个URL模式:它负责把收到的请求和你的试图函数匹配,有时候也会向视图传递一些参数。
创建模板      
在blog项目下创建templates目录(mysite/blog/templates/),在目录下创建模板文件index.html,内容如下:
{% for post in posts %}    <h2>{{ post.title }}</h2>    <p>{{ post.timestamp }}</p>    <p>{{ post.body }}</p>{% endfor%}

创建视图函数    

打开mysite/blog/views.py文件:
#coding=utf-8from django.shortcuts import renderfrom blog.models import BlogsPostfrom django.shortcuts import render_to_response
# Create your views here.def index(request):    blog_list = BlogsPost.objects.all()    return render_to_response('index.html',{'blog_list':blog_list})blog_list = BlogPost.objects.all() :获取数据库里面所拥有BlogPost对象
render_to_response()返回一个页面(index.html),顺带把数据库中查询出来的所有博客内容(blog_list)也一并返回。
创建blog的URL模式 创建blog的URL模式                                                                             
在mysite/urls.py文件里添加blog的url:


#coding=utf-8from django.conf.urls import patterns, include, urlfrom django.contrib import admin
urlpatterns = patterns('',    url(r'^admin/', include(admin.site.urls)),    url(r'^index/$', 'blog.views.index'),)

自动化运维
django搭建补充: http://www.cnblogs.com/xiaozhiqi/p/5851360.html
自动化运维平台:  https://github.com/jwh5566/my_oms