小编Rya*_*anM的帖子

在Django中指定PostgreSQL Schema

我正在尝试使用Django构建一些数据库前端,因为我喜欢一般的MVC结构以及他们的模板系统和管理界面.但是,我在使用PostgreSQL后端的某些方面遇到了问题.

我已经设法弄清楚如何使用settings.py文件的数据库部分指定不同的模式(和数据库),如下所示:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    },
    'MPS': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'OPTIONS': {
            'options': '-c search_path=django'
        },
       'NAME': 'sandbox_manzer',
       'HOST': '192.168.2.151',
       'PORT': '5434',
       'USER': '******',
       'PASSWORD': '**********************',
    }
}
Run Code Online (Sandbox Code Playgroud)

然而,当我尝试和脚本一些基本的测试,详见这里,我遇到一个问题.我的用户可以很好地创建数据库,以便我的test_db构建,但是当django应用程序将模型构建到表中时,我得到一个错误,指出No schema is specifiedtest_db.我将非常感谢有关如何为test_db指定模式名称的任何帮助.特别是因为我打算使用不同的模式作为逻辑分隔符为单个项目构建多个应用程序.

谢谢!

django postgresql

9
推荐指数
1
解决办法
4583
查看次数

带有 Axios 的 Django CSRF 令牌

情况:

我正在尝试使用 Vue.js 作为我的前端和 Django 作为我的后端来构建一个完整的 SPA。这些系统是完全独立的(不是index.html由后端提供页面的混合应用程序)。

方法

services在 Vue-CLI 生成的项目中创建了一个目录,该目录通过api.js文件(内容如下)为我的 REST API 提供一般可访问性:

import axios from "axios";
import Cookies from "js-cookie";

axios.defaults.xsrfHeaderName = "X-CSRFToken";
axios.defaults.xsrfCookieName = "csrftoken";

const BackEnd = "http://127.0.0.1:8000/"; //local backend from manage.py runserver

export default axios.create({
  baseURL: `${BackEnd}api/`,
  timeout: 5000,
  headers: {
    "Content-Type": "application/json",
    "X-CSRFToken": Cookies.get('csrftoken')
  }
});
Run Code Online (Sandbox Code Playgroud)

我怎么知道有这样的令牌可以得到?我编写了一个 API 端点,它在响应标头中提供令牌(如下所示):

Access-Control-Allow-Origin: *
Content-Length: 77
Content-Type: application/json
Date: Sun, 19 Jul 2020 18:04:06 GMT
Server: WSGIServer/0.2 CPython/3.7.6
Set-Cookie: csrftoken=HdM4y6PPOB44cQ7DKmla7lw5hYHKVzTNG5ZZJ2PqAUWE2C79VBCJbpnTyfEdX3ke; expires=Sun, …
Run Code Online (Sandbox Code Playgroud)

django cookies csrf vue.js axios

8
推荐指数
1
解决办法
2240
查看次数

将 Traefik StripPrefix 中间件添加到 docker-compose 标签导致 504

我开发了几个 docker-ized 全栈 web 应用程序,我试图将请求路由到使用 Traefik。我想通过 docker-compose 标签利用动态配置。我想应用 stripPrefix 中间件选项,以便我可以使用相同的应用程序路由,就好像每个应用程序都在根处提供服务一样。但是,一旦应用这些规则,就会产生 504 网关超时响应。

这是我的设置:

  • Traefik 2.0.1
  • Docker 19.03.2,撰写 1.24.1
  • NGINX:最新图片
  • global搬运工网络在其上Traefik容器运行
  • 多个多容器应用程序,每个应用程序都包含一个 NGINX Web 服务器
  • 所有应用程序都有自己的local网络,NGINX 容器也在global网络上。
  • 每个应用程序都配置为监听 /

以下是docker-compose.yml违规 NGINX 容器的定义:

nginx:
        image: nginx:latest
        container_name: "mps_nginx"
        volumes:
        - ./nginx/confs/nginx.conf:/etc/nginx/default.conf
        - ./static:/www/static
        restart: "always"
        labels:
            - traefik.http.routers.mps.rule=Host(`localhost`) && PathPrefix(`/mps`)
            - traefik.http.middlewares.strip-mps.stripprefix.prefixes=/mps
            - traefik.http.routers.mps.middlewares=strip-mps@docker
        networks:
        - default
        - mps
Run Code Online (Sandbox Code Playgroud)

更糟糕的是,当我注释掉middlewares标签时,它运行得很好,但找不到匹配的 URL 模式。

在此之前,我使用Traefik 快速入门教程中whoami定义的容器测试了我的方法:

# Test service to make …
Run Code Online (Sandbox Code Playgroud)

middleware nginx docker docker-compose traefik

5
推荐指数
2
解决办法
4556
查看次数