我在使用Django REST Swagger时遇到问题。我已经使用DRF为用户创建了一个简单的视图集(仅用于显示我的问题),其中AppUser是我的自定义用户模型,并且未在文档中显示POST方法,但是我可以使用Postman进行调用并创建新资源
我正在使用:
这是我的代码:
views.py
class UserViewSet(viewsets.ModelViewSet):
queryset = AppUser.objects.all()
serializer_class = UserSerializer
serializers.py
class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = AppUser
fields = '__all__'
urls.py
from django.conf.urls import url, include
from rest_framework.routers import SimpleRouter
from rest_framework_swagger.views import get_swagger_view
import app.views as app
# creating router
router = SimpleRouter()
router.register(r'users', app.UserViewSet)
schema_view = get_swagger_view(title='My app API')
# register urls
urlpatterns = [
url(r'^', include(router.urls)),
url(r'^docs', schema_view)
]
在这里您可以看到我的应用程序文档的样子:
我想得到这样的东西:
我已经尝试了有关创建Swagger文档的多个教程,并在User模型上进行了尝试,但是我仍然只收到GET请求。我在做什么错了?
谢谢您的帮助。
答案 0 :(得分:0)
我知道了。我尚未正确登录,因此未针对settings.py中DRF的DEFAULT_PERMISSION_CLASSES设置中列出的权限进行身份验证。
window.addEventListener("load", () => {
const canvas = document.querySelector('#canvas');
const ctx = canvas.getContext('2d');
console.log("hi!")
canvas.height = window.innerHeight;
canvas.width = window.innerWidth;
let painting = false;
function startPosition(e){
painting = true;
draw(e);
}
function endPosition(){
painting = false;
ctx.beginPath();
var imgData = ctx.getImageData(0, 0, window.innerHeight, window.innerWidth);
console.log(imgData);
}
function draw(e) {
if (!painting) return;
ctx.lineWidth = 10;
ctx.lineCap = 'round';
ctx.lineTo(e.clientX, e.clientY);
ctx.stroke();
ctx.beginPath();
ctx.moveTo(e.clientX, e.clientY);
}
canvas.addEventListener("mousedown",startPosition);
canvas.addEventListener("mouseup",endPosition);
canvas.addEventListener("mousemove",draw);
使用 has_permission()根据此处定义的权限列表检查HTTP方法POST,PUT,PATCH等。
登录后效果很好。
编辑:登录问题是Django-rest-swagger 2.2.0在JWT身份验证下无法正常工作,所以我降级为2.1.2。