基于Django搭建web app框架

作者: EldonZhao | 来源:发表于2017-01-16 17:28 被阅读246次

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

    • 配置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
    
    控制界面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

    参考资料:

    相关文章

      网友评论

        本文标题:基于Django搭建web app框架

        本文链接:https://www.haomeiwen.com/subject/dmnubttx.html