django快速搭建blog系统
发布日期:2021-11-08 09:37:37 浏览次数:1 分类:技术文章

本文共 7170 字,大约阅读时间需要 23 分钟。


一、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 *
ImportError: No module named '_sqlite3'
  下载一个高版本的 
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


转载地址:https://blog.csdn.net/zhengwei125/article/details/65444015 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:MySQL闪回-binlog2sql
下一篇:django下载安装

发表评论

最新留言

不错!
[***.144.177.141]2024年04月06日 21时10分49秒