×

Python-Djangon

96
酸菜xwdz
2018.07.18 18:25 字数 346

Django官方文档

版本信息
  • python : 3.6
  • 操作环境 : mac
  • django : 2.0
需要安装
  • pip
  • django
  • mysql

安装Django

pip install Django==2.0

可使用django-admi是否验证安装成功

[django]
    check
    compilemessages
    createcachetable
    dbshell
    diffsettings
    dumpdata
    flush
    ...

输出如上说明成功

创建一个项目

djando-admin startproject site(项目名称) 目录结构如下

+-- project
    -- __init__.py  
    -- settings.py 配置各种组件
    -- urls.py 配置每个页面url地址
    -- wsgi.py python应用与web服务器交互
+-- manage.py 管理器 启动server等

运行server

进入manage.py同级目录执行命令

python manage.py runserver 8989(端口,可选,默认8080)

打开浏览器输出http://127.0.0.1:端口/ 回车没报错则说明运行成功

创建一个应用

进入manage.py同级目录执行命令

python manage.py startapp blog(应用名称) 自动生成目录结构如下

blog/
    __init__.py
    admin.py
    apps.py
    migrations/
    __init__.py
    models.py
    tests.py
    views.py 接受请求以及返回代码编写

配置site/INSTALLED_APPS

    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog' # 应用名称

接收一个request请求

打开 blog/views.py

from django.shortcuts import render
from django.http import HttpResponse


def login(request):
    return HttpResponse('hello Django!')

注意: 函数参数带了request的说明会有请求过来

配置urls.py

blog文件夹下创建urls.py文件

from django.urls import path

from . import views as blog

urlpatterns = [
    path('login/', blog.login),
]

# site/urls.py文件
    
from django.contrib import admin
from django.urls import path
from django.urls import include
    
urlpatterns = [
     # 默认存在
    path('admin/', admin.site.urls),
    # 自己配置
    path('auth/', include('blog.urls')),
]
    
执行 python manage.py runserver 3232 在浏览器打开即可看见hello Django!

eg:一个urls.py配置列子


path
    site(项目)/urls.py配置如下
    path('auth',include('blog.urls')))
        -- login http://127.0.0.1:9999/auth/login/
        blog/urls.py 配置如下
            path('login/', blog.login)
        -- getUserName http://127.0.0.1:9999/auth/getUserName/
        path('getUserName/', blog.getUserName)
list
    site(项目)/urls.py配置如下
    path('list',include('blog.urls')))
        -- getOrderlist   http://127.0.0.1:9999/list/getOrderlist/
            blog/urls.py 配置如下
            path('getOrderlist/', blog.getOrderlist)
            

API抛出json数据结构

blog/views.py 编写接口

def getJsonTest:
    resultJson = {}
    result = {'name': 'huang', 'age': '11'}
    result2 = {'name': 'huang', 'age': '11'}
    result3 = {'name': 'huang', 'age': '11'}

    testJson = {
        'datetime': '昨天',
        'starttime': "今天"
    }
    result4 = {'name': testJson, 'age': '11'}

    listdata = [result, result2, result3, result4]
    resultJson['list'] = listdata
    resultJson['msg'] = 'this is message'
    print('request count ' + str(REQUESTCOUNT))
    return HttpResponse(json.dumps(resultJson), content_type="application/json")

在Rresponse添加如下content_type="application/json"返回即是json数据

配置数据库

配置Site/settings.py下DATABASES模块

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',   # 数据库引擎
        'NAME': 'douban_info',       # 你要存储数据的库名,事先要创建
        'USER': 'root',         # 数据库用户名
        'PASSWORD': '123123',     # 密码
        'HOST': 'localhost',    # 主机
        'PORT': '3306',         # 数据库使用的端口
    }
#   默认使用sqlite3
    #'default': {
    #    'ENGINE': 'django.db.backends.sqlite3',
    #    'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    #}
}

Django中的ORM

新建class继承models.Model表明新建表

class user(models.Model):
    name = models.TextField(max_length=332)
    desc = models.TextField(max_length=223)
    db = models.Manager()

    def __str__(self):
        return self.name

注意

安装mysql如果报错do you install mysqlclient ?

在site/init.py 添加如下代码

import pymysql
pymysql.install_as_MySQLdb()

执行命令

python manage.py makemigrations(可选)

python manage.py migrate

数据库查询

先导入model模块

from blog import models as model
model.Test0.db.all().values().first() ...
下午茶
Web note ad 1