【发布时间】:2021-06-21 08:22:09
【问题描述】:
我正在尝试修改用户个人资料中的用户名。我没有使用 Django 的用户模型,而是通过继承 AbstractBaseUser 创建了一个自定义用户模型 (MyRegistration)。我还在settings.py 中将我的自定义用户模型分配给AUTH_USER_MODEL。但是当我尝试修改用户的个人资料详细信息时,它会抛出一个ValueError,说明视图akola.views.akolaprofile 没有返回HttpResponse 对象。它返回了None。可能有什么问题?
另外,我想了解为什么自从我创建自己的用户模型以来,is_valid() 函数每次都在抛弃我。它只是不能以任何形式工作。以下是我的代码:
models.py:
from django.db import models
from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin
from django.utils import timezone
from .manager import FirstManager
#Making custom User model
class MyRegistration(AbstractBaseUser, PermissionsMixin):
location_list=[
('Solapur', 'Solapur'),
('Latur', 'Latur'),
('Dhule', 'Dhule'),
('Akola', 'Akola'),
('Nashik', 'Nashik')
]
username=models.CharField(max_length=10, unique=True)
email=models.EmailField(unique=True)
first_name=models.CharField(max_length=150)
last_name=models.CharField(max_length=150)
location=models.CharField(max_length=10, choices=location_list, default='Latur')
designation=models.CharField(max_length=70)
is_active=models.BooleanField(default=False)
is_staff=models.BooleanField(default=False)
start_date=models.DateTimeField(default=timezone.now)
last_login=models.DateTimeField(null=True)
USERNAME_FIELD='username'
REQUIRED_FIELDS=['email', 'first_name', 'last_name', 'location', 'designation']
objects=FirstManager()
def __str__(self):
return self.username
forms.py:
class ProfileForm(UserChangeForm):
password=None
class Meta:
model=MyRegistration
fields = ['username', 'first_name', 'last_name', 'email', 'location', 'designation', 'start_date', 'last_login']
labels={'email': 'Email Address'}
views.py: 行号7这里,print(fm.is_valid())在终端返回True,代码还是返回None。
def akolaprofile(request):
if request.user.is_authenticated:
if request.method=='POST':
print(request.POST)
fm=ProfileForm(request.POST, instance=request.user)
if fm.is_valid():
print(fm.is_valid())
fm.save()
else:
return HttpResponse('Not Valid!')
else:
nm=request.user.first_name
fm=ProfileForm(instance=request.user)
return render(request, 'akola/akolaprofile.html', {'form':fm, 'Name':nm})
else:
return HttpResponseRedirect('/login/')
urls.py:
from akola import views as ve
path('akolaprofile/', ve.akolaprofile, name='akolaprofile'),
]
模板:
{% block content %}
<div class="container" style="width: 65%; margin-top: 6%;">
<div class="container" style="background-color: #4e7a7e; height: auto; width: auto; margin-top: 8%;">
<div class="row">
<div class="col-lg-12"></div>
</div>
<div class="row">
<div class="col-lg-3" style="padding-top: 25px; padding-bottom: 20px; padding-left: 20px;">
<form action="" method="post" novalidate> {% csrf_token %}
{{form.username.label_tag}}
</div>
<div class="col-lg-3" style="padding-top: 25px; padding-bottom: 20px;">
{{form.username}}
</div>
<div class="col-lg-3" style="padding-top: 25px; padding-bottom: 20px; padding-left: 20px;">
{{form.first_name.label_tag}}
</div>
<div class="col-lg-3" style="padding-top: 25px; padding-bottom: 20px;">
{{form.first_name}}
</div>
</div>
<div class="row">
<div class="col-lg-3" style="padding-top: 25px; padding-bottom: 20px; padding-left: 20px;">
{{form.last_name.label_tag}}
</div>
<div class="col-lg-3" style="padding-top: 25px; padding-bottom: 20px;">
{{form.last_name}}
</div>
<div class="col-lg-3" style="padding-top: 25px; padding-bottom: 20px; padding-left: 20px;">
{{form.email.label_tag}}
</div>
<div class="col-lg-3" style="padding-top: 25px; padding-bottom: 20px;">
{{form.email}}
</div>
</div>
<div class="row">
<div class="col-lg-3" style="padding-top: 25px; padding-bottom: 20px; padding-left: 20px;">
{{form.designation.label_tag}}
</div>
<div class="col-lg-3" style="padding-top: 25px; padding-bottom: 20px;">
{{form.designation}}
</div>
<div class="col-lg-3" style="padding-top: 25px; padding-bottom: 20px; padding-left: 20px;">
{{form.start_date.label_tag}}
</div>
<div class="col-lg-3" style="padding-top: 25px; padding-bottom: 20px;">
{{form.start_date}}
</div>
</div>
<div class="row">
<div class="col-lg-3" style="padding-top: 25px; padding-bottom: 20px; padding-left: 20px;">
{{form.location.label_tag}}
</div>
<div class="col-lg-3" style="padding-top: 25px; padding-bottom: 20px;">
{{form.location}}
</div>
<div class="col-lg-3" style="padding-top: 25px; padding-bottom: 20px; padding-left: 20px;">
{{form.last_login.label_tag}}
</div>
<div class="col-lg-3" style="padding-top: 25px; padding-bottom: 20px;">
{{form.last_login}}
</div>
</div>
<div class="row text-center">
<div class="col-lg-12">
<input class="submitbtn" type="submit" value="Save">
</div>
</div>
<div class="row">
<div class="col-lg-12"></div>
</div>
</div>
</div>
{% endblock content %}
【问题讨论】:
-
表单有效时您没有返回响应...
-
@AbdulAzizBarkat 这工作..谢谢你的兄弟。 :)
-
@noob87 当你说
is_valid()不起作用时,你是什么意思?
标签: python django django-views django-forms