即使在刷新后,在/ admin /的Django ValueError

时间:2019-02-09 16:47:32

标签: django

我正在使用react,redux和django-rest-framework设置Django应用程序。在Django中添加“客户”模型后,访问管理界面时出现ValueError。

即使通过删除以下行从管理界面中删除了所有模型之后,错误仍然会返回: admin.site.register(model)

即使我刷新数据库,错误仍然不断返回。

我使用带有knox令牌的django用户模型登录django应用程序。

这是Pipenv中的本地Django安装。

错误:

Environment:


Request Method: GET
Request URL: http://127.0.0.1:8000/admin/

Django Version: 2.1.5
Python Version: 3.5.2
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'leads',
 'rest_framework',
 'frontend',
 'knox',
 'accounts',
 'customer']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']



Traceback:

File "/home/[NAME]/.local/share/virtualenvs/lead_manager-2CdCcx2v/lib/python3.5/site-packages/django/core/handlers/exception.py" in inner
  34.             response = get_response(request)

File "/home/[NAME]/.local/share/virtualenvs/lead_manager-2CdCcx2v/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response
  126.                 response = self.process_exception_by_middleware(e, request)

File "/home/[NAME]/.local/share/virtualenvs/lead_manager-2CdCcx2v/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response
  124.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/home/[NAME]/.local/share/virtualenvs/lead_manager-2CdCcx2v/lib/python3.5/site-packages/django/contrib/admin/sites.py" in wrapper
  241.                 return self.admin_view(view, cacheable)(*args, **kwargs)

File "/home/[NAME]/.local/share/virtualenvs/lead_manager-2CdCcx2v/lib/python3.5/site-packages/django/utils/decorators.py" in _wrapped_view
  142.                     response = view_func(request, *args, **kwargs)

File "/home/[NAME]/.local/share/virtualenvs/lead_manager-2CdCcx2v/lib/python3.5/site-packages/django/views/decorators/cache.py" in _wrapped_view_func
  44.         response = view_func(request, *args, **kwargs)

File "/home/[NAME]/.local/share/virtualenvs/lead_manager-2CdCcx2v/lib/python3.5/site-packages/django/contrib/admin/sites.py" in inner
  213.                 if request.path == reverse('admin:logout', current_app=self.name):

File "/home/[NAME]/.local/share/virtualenvs/lead_manager-2CdCcx2v/lib/python3.5/site-packages/django/urls/base.py" in reverse
  58.                 app_list = resolver.app_dict[ns]

File "/home/[NAME]/.local/share/virtualenvs/lead_manager-2CdCcx2v/lib/python3.5/site-packages/django/urls/resolvers.py" in app_dict
  477.             self._populate()

File "/home/[NAME]/.local/share/virtualenvs/lead_manager-2CdCcx2v/lib/python3.5/site-packages/django/urls/resolvers.py" in _populate
  430.                     url_pattern._populate()

File "/home/[NAME]/.local/share/virtualenvs/lead_manager-2CdCcx2v/lib/python3.5/site-packages/django/urls/resolvers.py" in _populate
  419.                     bits = normalize(url_pattern.pattern.regex.pattern)

File "/home/[NAME]/.local/share/virtualenvs/lead_manager-2CdCcx2v/lib/python3.5/site-packages/django/utils/regex_helper.py" in normalize
  153.                 count, ch = get_quantifier(ch, pattern_iter)

File "/home/[NAME]/.local/share/virtualenvs/lead_manager-2CdCcx2v/lib/python3.5/site-packages/django/utils/regex_helper.py" in get_quantifier
  265.     return int(values[0]), ch

Exception Type: ValueError at /admin/
Exception Value: invalid literal for int() with base 10: 'id'

Settings.py:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'leads',
    'rest_framework',
    'frontend',
    'knox',
    'accounts',
    'customer',
]

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': ('knox.auth.TokenAuthentication',)
}

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'leadmanager.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

型号:

phone_regex = RegexValidator(regex=r'^\+?1?\d{9,15}$', message="Phone number must be entered in the format: '+999999999'. Up to 15 digits allowed.")

class CustomerManager(models.Manager):

    def create_customer(self, username, password, first_name, last_name, email, phone, country, city, zip, address):
        customer = self.create(username=username, password=password, first_name=first_name, last_name=last_name, email=email, phone=phone, country=country, city=city, zip=zip, address=address)
        return customer

# Create your models here.
class Customer(models.Model):
    username = models.CharField(max_length=50)
    password = models.CharField(max_length=256)
    first_name = models.CharField(max_length=75)
    last_name = models.CharField(max_length=75)
    email = models.EmailField()
    phone = models.CharField(validators=[phone_regex], max_length=17, blank=True)
    country = CountryField()
    city = models.CharField(max_length=50, default='City')
    zip = models.CharField(max_length=10)
    address = models.CharField(max_length=100)
    status = models.SmallIntegerField(choices=STATUS_CHOICES, default=1)
    objects = CustomerManager()

    def verify_password(self, raw_password):
        return pbkdf2_sha256.verify(raw_password, self.password)

    def __str__(self):
        return self.first_name + " " + self.last_name

我的预期结果是没有错误地访问Django Admin界面。 我希望我已提供解决此问题所需的所有信息。

编辑: urls.py

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('frontend.urls')),
    path('', include('leads.urls')),
    path('', include('accounts.urls')),
    path('', include('customer.urls')),
]

1 个答案:

答案 0 :(得分:0)

经过数小时的阅读和故障排除,我发现了错误。错误不在管理员,模型或api中。它在我的帐户应用程序的urls.py中。

这是我使用的代码:

path('api/auth/user/{id}', GetUserAPI.as_view()),

代替

path('api/auth/user/<id>', GetUserAPI.as_view()),

感谢您帮助解决给定的错误!