【发布时间】:2022-10-05 19:06:05
【问题描述】:
我正在处理一个社交媒体项目,并在创建任何个人资料时遇到此错误。请帮我解决这个问题。下面是提到的代码。
视图.py
from multiprocessing import context
from pickle import FALSE
from django.shortcuts import render,redirect
from django.views import View
from .form import CreateUserForm, ProfileForm
from .models import CustomUser, Profile
from django.contrib import messages
from django.contrib.auth import login,logout,authenticate
from django.contrib.auth.decorators import login_required
from django.views.generic.edit import CreateView, UpdateView
from django.views.generic.list import ListView
from django.views.generic.detail import DetailView
# Create your views here.
def index(request):
context = {}
return render(request,\'index.html\',context)
def registration(request):
userform = CreateUserForm(request.POST)
if request.method==\'POST\':
if userform.is_valid():
userform.save(commit=\'FALSE\')
else:
messages.error(request,\'An Error Occured!!\')
Users = CustomUser.objects.all()
context = {\'User\': Users, \'form\': CreateUserForm }
return render (request,\'registration.html\',context)
def log_in(request):
if request.method == \'POST\':
username = request.POST.get(\'username\')
password = request.POST.get(\'password\')
user = authenticate(request,username=username,password=password)
if user is not None:
login(request, user)
return redirect(\'home\')
else:
messages.info(request,\'Username or Password is incorrect\')
context = {}
return render(request,\'login.html\',context)
@login_required
def log_out(request):
logout(request)
messages.info(request, \"Logged out successfully!\")
return redirect(\'index\')
@login_required
def home(request):
return render(request,\'home.html\')
class ProfileCreate(CreateView):
def get_queryset(self):
return Profile.objects.all()
fields = [
\'image\',
\'first_name\',
\'last_name\'
]
template_name = \'profile.html\'
success_url = \"/home\"
def form_valid(self, form):
print(form.cleaned_data)
ProfileForm.save(self)
return super().form_valid(ProfileForm)
class ProfileDetailView(DetailView):
model = Profile
template_name = \"profileview.html\"
模型.py
from datetime import datetime
from distutils.command.upload import upload
from email.policy import default
from urllib import request
from django.apps import apps
from django.db import models
from django.contrib.auth.models import AbstractUser,BaseUserManager
from django.contrib.auth.hashers import make_password
from django.contrib.auth import get_user_model
# Create your models here.
class UserManager(BaseUserManager):
use_in_migrations = True
def _create_user(self, username, date_of_birth, email, password, **extra_fields):
\"\"\"
Create and save a user with the given username, email, and password.
\"\"\"
if not username:
raise ValueError(\'The given username must be set\')
email = self.normalize_email(email)
# Lookup the real model class from the global app registry so this
# manager method can be used in migrations. This is fine because
# managers are by definition working on the real model.
GlobalUserModel = apps.get_model(self.model._meta.app_label, self.model._meta.object_name)
username = GlobalUserModel.normalize_username(username)
user = self.model(username=username, date_of_birth=date_of_birth, email=email, **extra_fields)
user.password = make_password(password)
user.save(using=self._db)
return user
# def create_user(self, username, email=None, password=None, **extra_fields):
# extra_fields.setdefault(\'is_staff\', False)
# extra_fields.setdefault(\'is_superuser\', False)
# return self._create_user(username, email, password, **extra_fields)
def create_superuser(self, username, email=None, password=None, **extra_fields):
extra_fields.setdefault(\'is_staff\', True)
extra_fields.setdefault(\'is_superuser\', True)
if extra_fields.get(\'is_staff\') is not True:
raise ValueError(\'Superuser must have is_staff=True.\')
if extra_fields.get(\'is_superuser\') is not True:
raise ValueError(\'Superuser must have is_superuser=True.\')
return self._create_user(username, email, password, **extra_fields)
class CustomUser(AbstractUser):
email = models.EmailField((\'email address\'),unique= \'TRUE\')
date_of_birth = models.DateField(default=datetime.now)
REQUIRED_FIELDS = [\'email\']
objects = UserManager()
class Profile(models.Model):
user = models.OneToOneField(CustomUser, on_delete=models.CASCADE)
image = models.ImageField(upload_to = \'images\')
first_name = models.TextField(max_length=100)
last_name = models.TextField(max_length=100)
def __str__(self):
return self.user.username
profile.html
<html lang=\"en\">
<head>
<meta charset=\"UTF-8\">
<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">
<title>Profile</title>
</head>
<body>
<h1>Create your Profile First</h1>
<form method=\"POST\" action=\"\" enctype=\"multipart/form-data\">
{% csrf_token %}
{{ form }}
<input type=\"submit\" name=\"submit\" id=\"submit\">
</form>
<a href=\"{% url \'logout\' %}\">Log Out</a>
</body>
</html>
它显示属性错误,其中说 ProfileCreate 对象没有属性 \'errors\'。 但我无法找到我提到错误的位置以及如何删除此错误。
这是它的追溯
Environment:
Request Method: POST
Request URL: http://127.0.0.1:8000/profile/create
Django Version: 3.1.5
Python Version: 3.8.5
Installed Applications:
[\'accounts\',
\'django.contrib.admin\',
\'django.contrib.auth\',
\'django.contrib.contenttypes\',
\'django.contrib.sessions\',
\'django.contrib.messages\',
\'django.contrib.staticfiles\']
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 (most recent call last):
File \"C:\\Users\\shree\\AppData\\Local\\Programs\\Python\\Python38-32\\lib\\site-packages\\django\\core\\handlers\\exception.py\", line 47, in inner
response = get_response(request)
File \"C:\\Users\\shree\\AppData\\Local\\Programs\\Python\\Python38-32\\lib\\site-packages\\django\\core\\handlers\\base.py\", line 181, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File \"C:\\Users\\shree\\AppData\\Local\\Programs\\Python\\Python38-32\\lib\\site-packages\\django\\views\\generic\\base.py\", line 70, in view
return self.dispatch(request, *args, **kwargs)
File \"C:\\Users\\shree\\AppData\\Local\\Programs\\Python\\Python38-32\\lib\\site-packages\\django\\views\\generic\\base.py\", line 98, in dispatch
return handler(request, *args, **kwargs)
File \"C:\\Users\\shree\\AppData\\Local\\Programs\\Python\\Python38-32\\lib\\site-packages\\django\\views\\generic\\edit.py\", line 172, in post
return super().post(request, *args, **kwargs)
File \"C:\\Users\\shree\\AppData\\Local\\Programs\\Python\\Python38-32\\lib\\site-packages\\django\\views\\generic\\edit.py\", line 142, in post
return self.form_valid(form)
File \"C:\\Users\\shree\\django\\new\\accounts\\views.py\", line 81, in form_valid
ProfileForm.save(self)
File \"C:\\Users\\shree\\AppData\\Local\\Programs\\Python\\Python38-32\\lib\\site-packages\\django\\forms\\models.py\", line 451, in save
if self.errors:
Exception Type: AttributeError at /profile/create
Exception Value: \'ProfileCreate\' object has no attribute \'errors\'
-
提供完整的追溯
-
完成@AnkitTiwari
-
您是否有用于创建个人资料的表格...?如果是,请分享给我以帮助您!
标签: python django django-views django-class-based-views django-errors