欢迎访问个人博客

Abstract

继续Python Django 博客开发系列,这篇主要分享环境的搭建和基础配置


Before Installation

附自动化安装脚本部分截图:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[root@i-pp837f3z ~]# source install_pyenv.sh
default install to ~/.pyenv
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirror.bit.edu.cn
* extras: mirror.bit.edu.cn
* updates: mirrors.btte.net
Package readline-6.2-9.el7.x86_64 already installed and latest version
Package 1:openssl-1.0.1e-60.el7_3.1.x86_64 already installed and latest version
Package bzip2-libs-1.0.6-13.el7.x86_64 already installed and latest version
... ...
... ...
Dependency Installed:
keyutils-libs-devel.x86_64 0:1.5.8-3.el7 krb5-devel.x86_64 0:1.14.1-27.el7_3 libcom_err-devel.x86_64 0:1.42.9-9.el7 libgnome-keyring.x86_64 0:3.8.0-3.el7 libkadm5.x86_64 0:1.14.1-27.el7_3
libselinux-devel.x86_64 0:2.5-6.el7 libsepol-devel.x86_64 0:2.5-6.el7 libverto-devel.x86_64 0:0.2.5-4.el7 ncurses-devel.x86_64 0:5.9-13.20130511.el7 pcre-devel.x86_64 0:8.32-15.el7_2.1
perl-Error.noarch 1:0.17020-2.el7 perl-Git.noarch 0:1.8.3.1-6.el7_2.1 perl-TermReadKey.x86_64 0:2.30-20.el7 rsync.x86_64 0:3.0.9-17.el7 zlib-devel.x86_64 0:1.2.7-17.el7
Complete!
Cloning into '/root/.pyenv'...
remote: Counting objects: 15365, done.
remote: Compressing objects: 100% (29/29), done.
remote: Total 15365 (delta 50), reused 63 (delta 43), pack-reused 15291
Receiving objects: 100% (15365/15365), 2.74 MiB | 1.32 MiB/s, done.
Resolving deltas: 100% (10511/10511), done.
Cloning into '/root/.pyenv/plugins/pyenv-virtualenv'...
remote: Counting objects: 1901, done.
remote: Total 1901 (delta 0), reused 0 (delta 0), pack-reused 1901
Receiving objects: 100% (1901/1901), 537.87 KiB | 255.00 KiB/s, done.
Resolving deltas: 100% (1305/1305), done.

安装完成验证

1
2
[root@i-pp837f3z ~]# pyenv versions
* system (set by /root/.pyenv/version)

Install Django

这里安装超级快,因为我们切换了 pip 的 安装源

1
2
3
4
5
6
7
8
9
10
[root@i-pp837f3z ~]# pip install django==1.11.4
Collecting django==1.11.4
Downloading https://pypi.doubanio.com/packages/fc/fb/01e0084061c50f1160c2db5565ff1c3d8d76f2a76f67cd282835ee64e04a/Django-1.11.4-py2.py3-none-any.whl (6.9MB)
100% |████████████████████████████████| 7.0MB 6.4MB/s
Collecting pytz (from django==1.11.4)
Downloading https://pypi.doubanio.com/packages/55/62/e7cd0e15b76062d298413f14bb4ec3cd8568a22d274427f9c3c7286969f4/pytz-2017.2-py2.py3-none-any.whl (484kB)
100% |████████████████████████████████| 491kB 3.9MB/s
Installing collected packages: pytz, django
Successfully installed django-1.11.4 pytz-2017.2
[root@i-pp837f3z ~]#

Verify Installation

1
2
3
4
5
6
7
8
[root@i-pp837f3z ~]# python
Python 2.7.5 (default, Nov 6 2016, 00:28:07)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> django.__version__
'1.11.4'
>>>

Django 项目初始

创建项目

进入到你的工程目录下面去,然后开始我们的Django之旅

1
2
3
4
5
6
7
8
9
10
11
12
13
14
root@i-pp837f3z opt]# cd /opt/djangoproject/
[root@i-pp837f3z djangoproject]# pwd
/opt/djangoproject
[root@i-pp837f3z djangoproject]# django-admin.py startproject myblog
[root@i-pp837f3z djangoproject]# tree myblog/
myblog/
|-- manage.py
`-- myblog
|-- __init__.py
|-- settings.py
|-- urls.py
`-- wsgi.py
1 directory, 5 files

django-admin.py VS manage.py

  • django-admin.py

    是Django项目的入口命令行管理工具集,通过他可以创建我们的项目、同步数据库、等等操作, 你可以 django-admin.py --help 查看全部用法

  • manage.py

    和django-admin.py有相同的用处,不过额外的还有别的和项目特殊相关的。在创建每个项目的时候都会自动生成一个 manage.py 文件,它会把你的项目自动加入到 sys.path中去等,具体可以参考:https://docs.djangoproject.com/en/1.11/ref/django-admin/

创建应用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@i-pp837f3z myblog]# python manage.py startapp blog
[root@i-pp837f3z myblog]# tree .
.
|-- blog
| |-- admin.py
| |-- apps.py
| |-- __init__.py
| |-- migrations
| | `-- __init__.py
| |-- models.py
| |-- tests.py
| `-- views.py
|-- manage.py
`-- myblog
|-- __init__.py
|-- __init__.pyc
|-- settings.py
|-- settings.pyc
|-- urls.py
`-- wsgi.py

配置应用

vim myblog/settings.py 把新增APP添加到INSTALLED_APPS

1
2
3
4
5
6
7
8
9
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog',
]

vim myblog/urls.py 新增关于 blog 应用的URL解析

1
2
3
4
5
6
7
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^blog/', include('blog.urls')),
url(r'^admin/', admin.site.urls),
]

这里现在blog应用中新增一个index view

1
2
3
4
5
6
7
vim blog/views.py
# -*- coding: utf-8 -*-
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def index(request):
return HttpResponse('hello django blog')

然后在 blog 目录下新增 urls.py 如下

1
2
3
4
5
6
7
8
9
vim blog/urls.py
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.index, name='index'),
]

在上面这些初始化配置完成之后,我们只可以启动服务看看效果

启动服务

python manage.py runserver 0.0.0.0:8080

这里的 0.0.0.0 代表任何主机可访问, 8002 是对外提供服务的端口

然后我们在浏览器中输入 192.168.88.2:8080 查看效果

image.png

出现这个需要们在 myblog/settings.py 中修改配置
ALLOWED_HOSTS = []ALLOWED_HOSTS = [*] 或者 ALLOWED_HOSTS = ['192.168.88.2']

再次刷新显示:

image.png

出现 hello django blog 证明我们基本环境已经部署oK …