您的位置:首页 > 编程语言 > Go语言

django快速搭建blog系统

2017-03-23 15:13 501 查看

一、Django的使用

创建一个工程

[root@llmj-svn-26-108 django-master]# django-admin.py startproject mysite

[root@llmj-svn-26-108 mysite]# ll
total 8
-rwxrwxr-x 1 root root  804 Dec 23 13:34 manage.py
drwxr-xr-x 2 root root 4096 Dec 23 13:34 mysite

生成以下文件


[root@llmj-svn-26-108 mysite]# ll
total 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 blog
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 30, in <module>
    from pysqlite2 import dbapi2 as Database
ImportError: 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]# ll
total 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__.py
drwxr-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 syncdb
Unknown command: 'syncdb'  报错了 在Django 1.9及未来的版本种使用migrate代替syscdb.
Type 'manage.py help' for usage.

解决:

[root@llmj-svn-26-108 mysite]# py manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running 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 createsuperuser
Username (leave blank to use 'root'): root
Email address: 893229927@qq.com
Password: 
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 url
from 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:27
Django version 1.11, using settings 'mysite.settings'
Starting development server at http://0.0.0.0:8000/ Quit the server with CONTROL-C.



在settings.py文件中设置模式为调试模式(因为我们当前是处于测试环境),并且把当前django所在服务器的ip加入allow_host列表中:

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
ALLOWED_HOSTS = ['*']





设计Model(即设计数据库表)                                  

1、设计model

现在我们打开blog目录下的models.py文件,这是我们定义blog数据结构的地方。打开mysite/blog/models.py 文件进行修改:

from django.db import models
from 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 blog
Migrations 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 blog
Migrations for 'blog':
  blog/migrations/0001_initial.py
    - Create model BlogsPost
[root@llmj-svn-26-108 mysite]#  py manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, blog, contenttypes, sessions
Running migrations:
  Applying blog.0001_initial... OK

3、再次runserver启动服务,访问admin后台,创建文章。

  登陆成功选择add 创建博客





设置admin 的BlogsPost界面                                                              
打开mysite/blog/models.py 文件,做如下修改:

from django.db import models
from 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的标题和时间。



创建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-8
from django.shortcuts import render
from blog.models import BlogsPost
from 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-8
from django.conf.urls import patterns, include, url
from 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


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  django搭建blog