AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1011205
Accepted
sogu
sogu
Asked: 2020-04-07 15:49:19 +0800 CST2020-04-07 15:49:19 +0800 CST 2020-04-07 15:49:19 +0800 CST

SQLite 工作,但 PostgreSQL 迁移数据库导致错误 - Django 3.0

  • 772

情况

  • 我已经用几个应用程序构建了 Django 3.0 项目。
  • 我已经根据以下课程创建了帐户应用程序,它是github
  • 比我创建了一个身份验证应用程序acc
  • 所有这些都在SQLite数据库中完成
  • 以前我已经为早期应用程序尝试了一个PostgreSQL数据库,它运行良好
  • 但是现在当我在 settings.py 文件中将SQLite切换到PostgreSQL时出现错误,我尝试登录
  • 如果我将 settings.py 切换回SQLite ,一切正常(例如:身份验证、使用用户登录、用户使用自己的设置在网站上执行操作)
  • 我使用 decorators.py 来保持登录用户访问登录和注册页面,当我切换到 postgresql 时会出错。我只在这里使用HttpResponse错误消息包含

装饰器.py

from django.http import HttpResponse
from django.shortcuts import redirect

def unauthenticated_user(view_func):
    def wrapper_func(request, *args, **kwargs):
        if request.user.is_authenticated:
            return redirect('home')
        else:
            return view_func(request, *args, **kwargs)

    return wrapper_func

def allowed_users(allowed_roles=[]):
    def decorator(view_func):
        def wrapper_func(request, *args, **kwargs):

            group = None
            if request.user.groups.exists():
                group = request.user.groups.all()[0].name

            if group in allowed_roles:
                return view_func(request, *args, **kwargs)
            else:
                return HttpResponse('Authorized')
        return wrapper_func
    return decorator

错误

如果我在 settings.py 使用PostgreSQL时登录。如果我注销一切正常。如果我使用 SQL lite,我可以登录并且一切正常

ValueError at /
The view accounts.decorators.wrapper_function didn't return an HttpResponse object. It returned None instead.
Request Method: GET
Request URL:    http://localhost...
Django Version: 3.0
Exception Type: ValueError
Exception Value: The view accounts.decorators.wrapper_function didn't return an HttpResponse object. It returned None instead.
Exception Location: /Users/.../python3.7/site-packages/django/core/handlers/base.py in _get_response, line 126
Python Executable:  /Users/.../bin/python3
Python Version: 3.7.3
.....

Request information
USER MYUSERNAME
GET No GET data
POST No POST data
FILES  No FILES data
COOKIES ...
...

试图解决

  • 我遵循的指南创建了我在迁移的 postgreSQL 数据库中也做过的用户组,但我仍然在评论部分收到与 USER1 相同的错误。
    • 这是视频底部的建议
    • “USER1我找到了,我忘记更改用户组了!
    • --> USER2 转到管理面板,然后在您的用户部分中,在所选组部分中添加客户”。
    • 我确实做到了,但没有奏效,唯一的区别是我使用了迁移的 postgresql,他们使用了原始的 SQLight .
  • 我在两个数据库中都有数据和表,但一些老员工使用PostgreSQL ,所有东西都使用SQLite。
    • 我尝试使用本指南将SQLite迁移到PostgreSQL。
    • 我已成功创建 SQLite 数据库的副本
    • 但是当我将设置更改为 postgres 并尝试python manage.py migrate时说Running migrations: No migrations to apply.
    • python manage.py loaddata db.json
    • 用户已从 SQLite 迁移(我可以使用他们登录并得到错误,就像唯一的 SQlite 用户一样,如果我输入错误的用户或密码,它不允许我进入),但我没有看到任何数据表在 Postgresql 中,如果我用 IDE 查找它
  • 我在论坛上与其他人交谈过,但很多人说这是有问题的装饰器文件,但它只发生在数据库切换时。
  • 我创建了一个新的 postgresql 数据库,并尝试迁移所有内容(迁移尚未迁移所有内容)。比我尝试使用新帐户注册时,它在填写表单按下提交后给了我以下错误消息
DoesNotExist at /register/
Group matching query does not exist.
django sql postgresql
  • 1 1 个回答
  • 200 Views

1 个回答

  • Voted
  1. Best Answer
    sogu
    2020-04-11T01:29:42+08:002020-04-11T01:29:42+08:00

    所以这就是我解决它的方法。

    • 当视频说我必须在管理面板中创建用户组时,我做到了。
    • 只需向该组添加属性。
    • Home › Authentication and Authorization › Groups › customer
    • 添加用户允许执行的功能,例如:
    ...
    accounts customer can view customer
    ...
    
    • 比我退出管理视图
    • 我以正常方式登录int eh,一切正常
    • 1

相关问题

  • Apache Django Mod_Wsgi - 自动重新加载应用程序

  • 哪个 Apache 包最适合 mod_wsgi Django 应用程序?

  • 设置 Django 服务器以服务多个站点的最佳方式是什么?

  • 哪个最适合 Django?Lighttpd 还是 Nginx?或者也许是别的什么?[关闭]

  • 如何向运行共享 IIS 服务器的 Python 新手解释 Django/Python 安装 [关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve