在生产环境(部署到pythonanywhere.com)中,在Django admin中将用户添加到组时,如何解决此错误?

2024-10-05 15:17:59 发布

您现在位置:Python中文网/ 问答频道 /正文

一切都在我的本地环境中工作,但在生产中出现了错误

我使用的是Django 3.0.4、Postgresql 11.8、Python 3.7

这是我在decorator.py中的自定义权限

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

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

            group = []
            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('You are not authorized to view the page')
        return wrapper_func
    return decorator

那么在我看来。py:

@login_required
@allowed_users(allowed_roles=['supervisor'])
def journal_entry(request):
    JournalFormset = modelformset_factory(JournalEntry, fields='__all__', extra=1)
    

    if request.method == 'POST':
        form = JournalFormset(request.POST, queryset=JournalEntry.objects.none())
        instance = form.save()
    
    form = JournalFormset(queryset=JournalEntry.objects.none())
    return render(request, 'journal_entry.html', {'form':form})

当我尝试将a用户添加到“主管”组时,如下图所示:

adding user to 'supervisor' group

我得到以下错误:

ProgrammingError at /admin/auth/user/2/change/
syntax error at or near "ON"
LINE 1: ...ser_groups" ("user_id", "group_id") VALUES (2, 1) ON CONFLIC...
                                                             ^
Request Method: POST
Request URL:    https://mogononso.pythonanywhere.com/admin/auth/user/2/change/
Django Version: 3.0.4
Exception Type: ProgrammingError
Exception Value:    
syntax error at or near "ON"
LINE 1: ...ser_groups" ("user_id", "group_id") VALUES (2, 1) ON CONFLIC...
                                                             ^
Exception Location: /home/mogononso/.virtualenvs/myenv/lib/python3.7/site-packages/django/db/backends/utils.py in _execute, line 86
Python Executable:  /usr/local/bin/uwsgi
Python Version: 3.7.5
Python Path:    
['/home/mogononso/.virtualenvs/myenv/lib/python3.7/site-packages/git/ext/gitdb',
 '/var/www',
 '.',
 '',
 '/var/www',
 '/home/mogononso/.virtualenvs/myenv/lib/python37.zip',
 '/home/mogononso/.virtualenvs/myenv/lib/python3.7',
 '/home/mogononso/.virtualenvs/myenv/lib/python3.7/lib-dynload',
 '/usr/lib/python3.7',
 '/home/mogononso/.virtualenvs/myenv/lib/python3.7/site-packages',
 '/home/mogononso/churchapp/churchapp2',
 '/home/mogononso/.virtualenvs/myenv/lib/python3.7/site-packages/gitdb/ext/smmap']
Server time:    Tue, 7 Jul 2020 16:07:26 +0000

我试过:

  1. 运行python manage.py makemigrations&;迁移命令
  2. 我在生产中创建了一个单独的数据库-同一个问题

Tags: pyformhomereturnrequestlibdefgroup