导读:今天首席CTO笔记来给各位分享关于Django如何引入api_view的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
django drf_yasg 非restful风格的api怎么在swagger上展示?
使用Swagger
Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件。
在web api 使用swagger可以说非常简单,不需要编写任何代码,完全依赖于插件。具体步骤如下:
1.新建一个web api项目
2.使用nuget添加Swashbuckle包
3.完成
没错,就是这么简单!运行项目,转到地址 会看到如下页面,这是默认添加的两个apicontroller:
这个时候接口还没有具体的描述信息等,例如我们给ValuesController.Get添加注释描述,在页面上还是没有显示出来。需要按照如下步骤实现:
1. 在app_start 下 SwaggerConfig 大100行的位置找到 //c.IncludeXmlComments(GetXmlCommentsPath()); 如下注释,改为:c.IncludeXmlComments(GetXmlCommentsPath(thisAssembly.GetName().Name)); (注意去掉注释了)
2. 在SwaggerConfig添加一个方法代码:
1
2
3
4
protected static string GetXmlCommentsPath(string name)
{
return string.Format(@"{0}\bin\{1}.XML", AppDomain.CurrentDomain.BaseDirectory, name);
}
3. 修改项目生成,在bin下对应的xml文件可以看到具体的描述文档,如下:
重新生成项目,就要可以看到完整的接口描述了。例如我们心中一个TestController如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/// summary
/// 测试控制器
/// /summary
public class TestController : ApiController
{
/// summary
/// 测试Get方法
/// /summary
/// remarks测试Get方法/remarks
/// returns/returns
[HttpGet]
public string Get()
{
return "Get";
}
/// summary
/// 测试Post方法
/// /summary
/// param name="name"姓名/param
/// param name="age"年龄/param
/// remarks测试Post方法/remarks
/// returns/returns
[HttpPost]
public string Post(string name, int age)
{
return name + age.ToString();
}
}
生成的页面如下,可以看到接口的描述,点击Try it out 即可调用:
三、非依赖代码
上面的方式依赖于Swashbuckle包,它已经包含了Swagger-UI组件。我们的代码需要引入这个包,实际上也可以不需要在项目中引入,单独部署Swagger,包括Swagger-Ui(api展示) 和 Swagger-Editor(在线编辑器),它需要依赖nodejs环境,所以需要先按照nodejs。部署其实也很简单,例如这是我部署的结果:
swagger-editor:
swagger-ui:
编辑后只需要将文件保存为json文件,然后拷贝到指定的目录即可。这个部署也非常简单,具体可以参照:
python导入 Django views,无法导入views
看你这样写好像也没有错误呀,是不是view写错了,应该是views才对吧。如果还是不行,那么可以改为 from 应用名 import views试试
python的Django views 文件中引入模块问题
看上面的图片,按你的导包方法,单独运行views是没问题的
但是在django里这样用不行,在运行django项目时,其实当前目录是整个项目的根目录
你可以在views目录下import os,然后 print(os.getcwd())查看当前目录:
打印的当前目录正是整个项目的根目录,我的是E:\mypython\day51...\blw:
你这里的就是G:\....Anno:
你要在Anno目录下导入data_model.py,是不是要带上app名才能进入子级目录对吧?
而且还有个问题就是,在以后的开发中,很有可能在不同app下有相同名字的模块或者方法,比如你这里有三个app,app01,app02,app03,这三个app下都有common_model,那到底按什么区分呢?所以前面最好带上app名。
不过真想方便,可以使用:from .common_model import data_model
【.】代指当前文件的目录,这是一种相对路径的导入
结语:以上就是首席CTO笔记为大家介绍的关于Django如何引入api_view的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。