基于Django搭建web app框架

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.
基于Django搭建web app框架_第1张图片
网站打开效果

添加接口:

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数据库配置:

  • 配置setting:
# 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;

创建模型:

  • 编辑maps/models.py文件:
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)
  • 执行makemigrations:
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
基于Django搭建web app框架_第2张图片
控制界面1
基于Django搭建web app框架_第3张图片
控制界面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)

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

基于Django搭建web app框架_第4张图片
控制界面3

参考资料:

  • 使用Django和python开发web站点
  • Django documentation
  • Django配置mysql数据库
  • Model field reference
  • How to install Django on Windows

你可能感兴趣的:(基于Django搭建web app框架)