一、安装Django
本文这里直接是在Pycharm上安装的django框架, 在终端上,执行如下命令,安装django:
pip install django
安装成功后,会有Successfully installed字样输出,如下所示:
然后可以在pycharm里面写如下代码,测试并查看django的版本,如下:
import django
version = django.get_version()
print(version)
这里我在print这行打个断点,可以看到version的值,如下所示:
这样django就已经安装完成。
二、创建简单项目
在安装完成后,Python的安装目录Scripts中就有django-admin.exe这个程序,创建项目就要用到这个程序。
这里在控制台中打开(可以是cmd控制台,也可以是pycharm控制台,本文就在电脑控制台执行),切换到项目对应的目录,例如创建名字为testdjango的程序,命令如下所示:
django-admin.exe startproject testdjango
执行完成后,在该目录中就已经创建了一个文件夹了,在pycharm中打开如下所示:
这里先不改任何代码,直接运行,注意这里要修改一下运行参数,默认参数是不行的,如下配置:
运行起来之后,在网页中访问如下网址:
127.0.0.1:8000
会看到如下界面,表示django项目创建成功:
三、创建自己APP
cd到testdjango目录中,执行下面代码,这里创建又给testapp的目录:
python manage.py startapp testapp
结果如下所示:
这里要使用testapp,首先要在testapp目录中创建一个view目录,然后将tespapp下的views.py复制进去,里面添加一个函数,简单写句话在里面,如下所示:
def test_func(request):
if request.method == 'GET':
return 'OK'
return 'Error'
然后创建一个urls.py,输入如下代码:
from django.conf.urls import url
from testdjango.testapp.view import views
urlpatterns = [
url('test/', views.test_func),
]
然后需要在testdjango目录中的urls.py中添加一行路由,如下所示:
urlpatterns = [
path('admin/', admin.site.urls), # 原有的
url('^testapp/',include(urls)) # 新加的
]
运行起来,在testapp.view.views.py函数里面打个断点,网页里面测试访问,访问如下网址:
http://127.0.0.1:8000/testapp/test/
然后就进入断点,如下,表示该接口已经跑通了,后续就是对接口的处理和值返回了:
这里生成自己的app的第一个接口就算跑通了,内部可以拿到请求消息体做处理,并返回相应的网页或者json等消息,这里不赘述。
四、其他说明
①生成的代码中有很多事空白没有代码的,这个阔以直接删除掉。
②其实testdjango里面的urls.py是一级url路由,testapp里面试二级url路由。
③settings.py里面是全局配置文件,可以注释掉关于db.sqlite3相关代码,避免生成db文件。
④testdjango里面urls.py原有的那个路由可以删除掉。
五、最后
放一个稍微完整点的代码:
import json
from django.http import JsonResponse, HttpResponseNotAllowed, HttpResponse
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def run(request):
if request.content_type != 'application/json':
return HttpResponse('only support json data', status=500)
if request.method == 'POST':
try:
req_data = json.loads(request.body)
# 这里可以执行自己的逻辑代码
rep_data = {'state': 0, 'msg': "ok"}
return JsonResponse(data=rep_data, status=200)
except Exception as why:
rep_data = {'state': 1, 'msg': "error"}
return JsonResponse(data=rep_data, status=200)
return HttpResponseNotAllowed(permitted_methods=['POST'])