安装Django
在确保安装了Python3的情况下,以管理员模式打开cmd命令行,输入“pip install django”安装Django。如果以非管理员模式打开cmd,您可能无法使用任何django命令。
新建一个Django项目
在您想要建立Django项目的文件夹下,打开cmd命令行,输入以下命令建立一个新的Django项目,我们假设项目名为“idm_django_demo”:
如果出现报错:'django-admin' 不是内部或外部命令,也不是可运行的程序或批处理文件。则代表django安装时,不是以管理员模式打开的cmd命令行。您需要以管理员模式打开cmd命令行后,先使用卸载命令(pip uninstall django)卸载,再重新安装(pip install django)。
3. 打开Django项目
您可以使用Visual Studio Code (Insider)或Jetbrains PyCharm之类的IDE打开Django项目文件夹。您可以看到项目文件夹下是由一个manage.py文件和一个项目同名的子文件夹组成的。
在这些文件中,我们平时需要修改的之后项目配置文件settings.py和项目总路由url.py,其他文件多为系统生成文件,不(需)要修改。
4. 安装Django Rest Framework
在本案例中我们使用Django作为纯后端框架,用来提供restful api接口,所以我们需要用到Django的Rest组件:Django Rest Framework。
在cmd命令行或IDE中的命令行中,输入以下命令安装Django Rest Framework:
打开项目中的settings.py设置文件,给“INSTALLED_APPS”添加一项'rest_framework':
最后这部分可能看起来是这样的:
然后打开总路由文件url.py,添加一行:
并且在引用中加入include:“from django.urls import path, include”。最后总路由可能看起来是这样的:
5. 建立一个接口并测试
接下来我们测试一下是否可以正常访问一个django项目的api接口。
首先我们在django项目中新建一个app,通俗的来说,就是django项目中的一个文件夹。可以理解为asp.net webapi中的area或者Controller里的各个文件夹,或者理解为Java Spring Boot中Controller中个各个文件夹。每个文件夹代表了一类功能/模块的集合。如何分割这些文件夹和里边的类/模块是完全自由的,一般按照功能类别或业务类别来区分。
我们新建一个叫"authority"的app,一般这个命名的app中会放上有关账户权限、登录、角色、菜单之类的功能。我们在之后的教程中会在里边实现一个登陆验证功能作为前后端通讯的案例。
首先我们了解一下新建app的命令,在后端项目文件夹根目录输入以下命令:
回车后可以看到项目中多出来一个叫authority的文件夹。
一般新建一个app后,我们还需要手动在里边新建一个urls.py的路由文件,代码示例如下:
可以看到前两行分别引用django的路径组件和这个路由所属的app的views文件。下边我们定义了一个api接口路由地址叫Test,它指向了views文件夹中的Test类。
接下来我们去views.py中把这个测试类Test写出来:
注意遵守python的命名规则,类名为大驼峰,比如VerifyAccountAndPassword,变量名为下划线连接的小写字母,比如account_and_password,而不是小驼峰accountAndPassword。如果您的变量名和python内置的方法名或变量名冲突了,您可以直接在名称前方或后方加一个下划线,比如您本来想创建一个叫def的变量,但是它和python内置关键字冲突了,此时您可以将您的变量名称改为_def或def_。
最后我们需要去总路由中导入我们在“authority”这个新建的app中,自己创建的路由文件。打开总路由urls.py,它在项目文件夹中的项目同名子文件夹中:
像右侧红色剪头那样引入authority里的urls文件,此时整个路由从上到下就联通了。
注意这里有一个极易出现的错误:path中第一个参数名,即url的路径前缀,必须以斜线“/”结尾,比如“api/authority/”,不能是“api/authority”,否则会报错。
另外建议所有接口都以一个固定名称开头,比如"api/",这样会避免诸多问题,比如处理越权问题的难易程度,以及在最后使用nginx等服务部署访问时,可以将前后端放在同一个端口下等。
好了,现在我们通过以下命令运行起来后端项目,测试一下是否能够成功访问这个测试接口吧:
运行完毕后,我们在浏览器中打开地址:http://localhost:9000/api/authority/test/
就可以看到我们成功获取了一串json格式的字符串:
如果您使用了Firefox,或者使用了安装了json插件的Chrome,还可以快速切换它的显示模式,让Json格式化显示,更方便debug。
自此,一个支持RESTful API的Django后端就搭建完毕了。下一章我们会讲解,让这两个前后端联通,还需要哪些工作,比如让后端支持前端跨域访问。