Python 运维我的Python自学之路

基于Django搭建web app框架

2017-01-16  本文已影响246人  EldonZhao

Django安装:

eldon@ubuntu:~$ sudo pip install Django==1.10.5
The directory '/home/eldon/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
The directory '/home/eldon/.cache/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -Hflag.
Collecting Django==1.10.5
  Downloading Django-1.10.5-py2.py3-none-any.whl (6.8MB)
    100% |████████████████████████████████| 6.8MB 50kB/s
Installing collected packages: Django
  Found existing installation: Django 1.8.10
    Uninstalling Django-1.8.10:
      Successfully uninstalled Django-1.8.10
Successfully installed Django-1.10.5

查看Django版本:

eldon@ubuntu:~$ python -m django --version
1.10.5

使用Django创建项目(project):

eldon@ubuntu:~/github/ColusLifeDemo$ django-admin startproject Server
eldon@ubuntu:~/github/ColusLifeDemo$ ls
Browser  LICENSE  README.md  Server
eldon@ubuntu:~/github/ColusLifeDemo$ cd Server/
eldon@ubuntu:~/github/ColusLifeDemo/Server$ tree -L 2
.
├── manage.py
└── Server
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

1 directory, 5 files

创建应用(app):

eldon@ubuntu:~/github/ColusLifeDemo/Server$ python manage.py startapp maps
eldon@ubuntu:~/github/ColusLifeDemo/Server$ ls
manage.py  maps Server
eldon@ubuntu:~/github/ColusLifeDemo/Server$ cd maps/
eldon@ubuntu:~/github/ColusLifeDemo/Server/Map$ ls
admin.py  apps.py  __init__.py  migrations  models.py  tests.py  views.py

修改setting文件:

eldon@ubuntu:~/github/ColusLifeDemo/Server/Server$ vim settings.py
INSTALLED_APPS中添加'maps'

启动服务:

至此整个web服务框架就搭建成功了,你可以按如下步骤尝试启动一下服务。

eldon@ubuntu:~/github/ColusLifeDemo/Server$ python manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).

You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

January 16, 2017 - 07:53:33
Django version 1.10.5, using settings 'Server.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
网站打开效果

添加接口:

eldon@ubuntu:~/github/ColusLifeDemo/Server$ git diff
diff --git a/Server/Server/urls.py b/Server/Server/urls.py
index 9ef4436..dac1cb2 100644
--- a/Server/Server/urls.py
+++ b/Server/Server/urls.py
@@ -15,7 +15,9 @@ Including another URLconf
 """
 from django.conf.urls import url
 from django.contrib import admin
+from maps import views as maps_views

 urlpatterns = [
     url(r'^admin/', admin.site.urls),
+    url(r'^maps/([a-z]+)/$', maps_views.show),
 ]
diff --git a/Server/maps/views.py b/Server/maps/views.py
index 91ea44a..b1fa5b9 100644
--- a/Server/maps/views.py
+++ b/Server/maps/views.py
@@ -1,3 +1,9 @@
+import json
 from django.shortcuts import render
+from django.http import HttpResponse

 # Create your views here.
+
+def show(request, *params):
+    context = {"country_name": params[0]}
+    return HttpResponse(json.dumps(context, indent=4))

mysql数据库配置:

# vim Server/settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    },
    'mysql': {
        'ENGINE': 'django,db,backends.mysql',
        'NAME': 'coluslife',
        'USER': 'root',
        'PASSWORD': '',
        'HOST': '',
        'PORT': '3306',
    },
}
mysql -uroot
> CREATE DATABASE coluslife;

创建模型:

from __future__ import unicode_literals
from django.db import models
import uuid
# Create your models here.
class User(models.Model):
    FEMALE = 'F'
    MALE = 'M'
    USER_GENDER_CHOICES = (
        (FEMALE, 'female'),
        (MALE, 'male'),
    )
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    name = models.CharField(max_length=64)
    gender = models.CharField(max_length=1, choices=USER_GENDER_CHOICES, default=FEMALE)
    password = models.CharField(max_length=128)
    description = models.TextField(max_length=1024)
eldon@ubuntu:~/github/ColusLifeDemo/Server$ python manage.py makemigrations
Migrations for 'coluslife':
  coluslife/migrations/0001_initial.py:
    - Create model Location
    - Create model User
    - Create model UserLocation
eldon@ubuntu:~/github/ColusLifeDemo/Server$ python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, coluslife, contenttypes, sessions
Running migrations:
  Applying coluslife.0001_initial... OK
mysql> show tables;
+----------------------------+
| Tables_in_coluslife        |
+----------------------------+
| auth_group                 |
| auth_group_permissions     |
| auth_permission            |
| auth_user                  |
| auth_user_groups           |
| auth_user_user_permissions |
| django_admin_log           |
| django_content_type        |
| django_migrations          |
| django_session             |
| location                   |
| user                       |
| user_location              |
+----------------------------+
13 rows in set (0.00 sec)

创建超级用户:

eldon@ubuntu:~/github/ColusLifeDemo/Server$ python manage.py createsuperuser
Username (leave blank to use 'eldon'): admin
Email address:
Password:
Password (again):
Superuser created successfully.
eldon@ubuntu:~/github/ColusLifeDemo/Server$ python manage.py runserver
Performing system checks...
System check identified no issues (0 silenced).
January 22, 2017 - 09:12:43
Django version 1.10.5, using settings 'Server.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

登入管理界面:

访问:http://127.0.0.1:8000/admin
控制界面1 控制界面2

修改admin.py使自定义model支持管理员操作:

# vim coluslife/admin.py
from django.contrib import admin
from coluslife.models import *
# Register your models here.
admin.site.register(User)
admin.site.register(Location)
admin.site.register(UserLocation)

重新启动服务,登入管理界面后,即可看到自己增加的数据库表:

控制界面3

参考资料:

上一篇下一篇

猜你喜欢

热点阅读