Django proxy_view代理后端

这篇具有很好参考价值的文章主要介绍了Django proxy_view代理后端。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

某些需求下,需要通过Django代理后端,比如开发celery定时任务时候,需要代理后端的flower,代理后端可以直接使用Django自带的授权,方便权限控制

具体操作如下

1.安装 django-proxy 包,进行代理

pip install django-proxy

2.编写view,用与代理后端flower

settings.py中添加下面配置

CELERY_FLOWER_PORT = 5566
CELERY_FLOWER_HOST = '127.0.0.1'
CELERY_FLOWER_AUTH = 'flower:flower123.'

 flower.py文件如下

import base64
import logging

from django.conf import settings
from django.http import HttpResponse
from django.utils.translation import gettext as _
from django.views.decorators.clickjacking import xframe_options_exempt
from proxy.views import proxy_view
from rest_framework.views import APIView

logger = logging.getLogger(__name__)

flower_url = f'{settings.CELERY_FLOWER_HOST}:{settings.CELERY_FLOWER_PORT}'


class CeleryFlowerView(APIView):

    @xframe_options_exempt
    def get(self, request, path):
        remote_url = 'http://{}/api/flower/{}'.format(flower_url, path)
        try:
            basic_auth = base64.b64encode(settings.CELERY_FLOWER_AUTH.encode('utf-8')).decode('utf-8')
            response = proxy_view(request, remote_url, {
                'headers': {
                    'Authorization': f"Basic {basic_auth}"
                }
            })
        except Exception as e:
            logger.warning(f"celery flower service unavailable. {e}")
            msg = _("<h3>服务不在线,请联系管理员</h3>")
            response = HttpResponse(msg)
        return response

    @xframe_options_exempt
    def post(self, request, path):
        return self.get(request, path)

添加url路由配置

from django.conf import settings
from django.contrib import admin
from django.urls import path, include, re_path
from django.views.static import serve

from common.celery.flower import CeleryFlowerView

urlpatterns = [
    path('admin/', admin.site.urls),
    re_path(r'api/flower/(?P<path>.*)', CeleryFlowerView.as_view(), name='flower-view'),
    # media路径配置 开发环境可以启动下面配置,正式环境需要让nginx读取资源,无需进行转发
    re_path('^media/(?P<path>.*)$', serve, {'document_root': settings.MEDIA_ROOT}),
]

 

可以看到上面代理使用了额外的认证配置,是因为flower2.0 中部分操作,需要认证才能操作

3.启动flower进程

celery -A server flower -logging=info --url_prefix=/api/flower  --basic-auth=flower:flower123.  --address=127.0.0.1 --port=5566

4.访问

Django proxy_view代理后端,Xadmin,vue,Django,django,python,后端,flower,celery,django-proxy

 可以看到,cookie信息已经传递到后台,然后基于token进行认证文章来源地址https://www.toymoban.com/news/detail-528035.html

到了这里,关于Django proxy_view代理后端的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • VUE+Django实现前端开启摄像头录制存储视频并直接上传后端

    1.录制前 2.录制中 3.录制结束下载文件至本地 4.视频文件同时上传至后端接口 参考博客https://blog.csdn.net/wuchenlhy/article/details/79311234?spm=1001.2014.3001.5506 博主在后端这块写的十分简洁明了,可以直接参考实现开设后端简单文件上传接口的方法 参考文章: https://blog.csdn.net/XH_jing/a

    2024年02月14日
    浏览(64)
  • Django笔记(四):视图views

    视图view处理客户端请求并生成响应数据,可简单认为编写接口的部分。 上述index视图,会返回一个“hello world”的响应。 render返回html,JsonResponse返回json格式(字典),redirect重定向到其他页面,可以是个完整url也可以是某个路由的name,笔记(三)urls中每条路由配置可以设置

    2024年01月19日
    浏览(31)
  • Django学习笔记-视图(views)的使用

    Django中可以使用views进行管理,类似于WPF的MVVM的ViewModel层,也相当于MVC架构的模Controller层。 通过定义一个函数,包含HttpRequest对象作为参数,用来接受客户端请求,然后返回HttpResponse对象做为响应放回给客户端。 在template中定义一个模板文件persondetail.html 基于类的视图与基于

    2024年02月15日
    浏览(43)
  • Django搭建图书管理系统04:View视图初探

    数据库虽然已经有了,但是用户通常只需要这个庞大数据库中的很小一部分进行查看、修改等操作。为此还需要代码来恰当的取出并展示数据,这一部分代码就被称为 视图 。 Django 中视图的概念是**「一类具有相同功能和模板的网页的集合」**。 首先写一个最简单的 视图函数

    2024年02月15日
    浏览(35)
  • Django后端开发——Django应用及分布式路由

    B站网课:点击蓝色字体跳转 或者复制链接在浏览器打开:https://www.bilibili.com/video/BV1vK4y1o7jH?p=14vd_source=597e21cf34ffcdce468ba00be2177e8a 终端: 在settings.py的INSTALLED_APPS中添加应用名即可 news开头的交由news管理 music开头的交由music管理 Step1 - 主路由中调用include函数 语法:include(‘app名

    2024年02月19日
    浏览(55)
  • 【后端】Django与Django REST Framework的结合使用

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 随着开发语言及人工智能工具的普及,使得越来越多的人会主动学习使用一些开发语言,本文主要介绍Django与Django REST Framework的结合使用。 创建Django项目通常包括以下步骤: 安装Django : 首先,确保你的

    2024年04月26日
    浏览(35)
  • Django后端开发——静态文件

    B站网课:点击蓝色字体跳转 或者复制网址在浏览器访问:https://www.bilibili.com/video/BV1vK4y1o7jH?p=13vd_source=597e21cf34ffcdce468ba00be2177e8a 如:图片、css、js、音频、视频 以下一行代码是手动添加的,指定了一个目录——‘static’,将在该目录下查找静态文件 模板中访问静态文件 - im

    2024年02月19日
    浏览(104)
  • django自定义后端过滤

    ​ 第一个 DjangoFilterBackend 是需要安装三方库见[搜索:多字段筛选] 两外两个是安装注册了rest_framework就有。 如上图,只要配置了三个箭头所指的方向,就能使用。 用户视图集中加上filterset_fields 后,后端搜索过滤就生效了 特点 : 是准确匹配,如搜王老五,能搜索来,搜 老

    2024年02月22日
    浏览(37)
  • 二挡起步——pythonweb开发Django框架,前端原生+Django后端框架002(附带小案例)

     大家好,我是csdn的博主: lqj_本人 这是我的个人博客主页: lqj_本人的博客_CSDN博客-微信小程序,前端,python领域博主 lqj_本人擅长微信小程序,前端,python,等方面的知识 https://blog.csdn.net/lbcyllqj?spm=1011.2415.3001.5343 哔哩哔哩欢迎关注: 小淼Develop 小淼Develop的个人空间-小淼Develop个

    2024年02月03日
    浏览(68)
  • vue.config.js配置proxy代理解决跨越;proxy代理报404;

    像我们本地的vue项目运行起来,访问的地址一般是localhost,这个时候请求后台的接口,端口号也不一致,肯定就会存在跨域问题,所以我们要是想正常访问接口的话,就需要解决掉跨域问题。 本文我们是在vue.config.js配置proxy代理解决跨越:如果没有vue.config.js,就直接在项目

    2023年04月08日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包