gpt4 book ai didi

python - 访问我的网站页面后无法登录管理页面

转载 作者:太空宇宙 更新时间:2023-11-03 21:33:04 25 4
gpt4 key购买 nike

我在我的管理部分创建了一个 super 用户。之后我可以登录管理页面。但是每当我尝试访问某些 myapp 页面然后再次想要访问管理页面时,它会显示此错误“请输入员工帐户的正确用户名和密码。请注意,这两个字段可能区分大小写。”我尝试了多次。我可以使用上次创建的同名创建一个新的 super 用户。这是两张截图:
Login Error
creating superuser

如何解决这个问题?

更新:

表单.py

 from django.contrib.auth.models import User
from django.forms import ModelForm
from django import forms
from .models import Profile

class UserForm(forms.ModelForm):
password= forms.CharField(widget= forms.PasswordInput)
class Meta:
model = User
fields = ('username','email','password')

class ProfileForm(forms.ModelForm):

class Meta:
model = Profile
fields = ('full_name','codeforces_id','Uva_Id')

模型.py

from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver

class Profile(models.Model):
user = models.OneToOneField(User,on_delete=models.CASCADE)
full_name = models.CharField(max_length=256, blank=False)
codeforces_id = models.CharField(max_length=256, blank=False)
Uva_Id = models.CharField(max_length=256, blank=False)
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)

@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
instance.profile.save()

views.py:

from django.http import HttpResponse 
from django.shortcuts import render,redirect
from django.contrib.auth import authenticate,login
from django.views import generic
from django.views.generic import View
from .forms import UserForm,ProfileForm

class UserFormView(View):
user_form_class = UserForm
profile_form_class= ProfileForm
#display a blank form
def get(self , request):
user_form = self.user_form_class(None)
profile_form = self.profile_form_class(None)
return render(request, 'website/registration_form.html',{
'user_form':user_form,
'profile_form':profile_form
})
#process form data
def post(self, request):
user_form = UserForm(request.POST, instance=request.user)
profile_form = ProfileForm(request.POST, instance=request.user.profile)
if user_form.is_valid() and profile_form.is_valid():
user= user_form.save(commit= False)
password= user_form.cleaned_data['password']
username = user_form.cleaned_data['username']
user.set_password(password)

user.save()
profile_form.save()

# auto login
user = authenticate(username =username, password = password)

if user is not None:
if user.is_active:
login(request,user)
return redirect('website:index')
return render(request, 'website/registration_form.html',{
'user_form':user_form,
'profile_form':profile_form
})

最佳答案

我认为你把事情过于复杂化了。所以尝试这样:

# forms


class UserForm(forms.ModelForm):
password = forms.CharField(widget= forms.PasswordInput)
full_name = forms.CharField()
codeforces_id = forms.CharField()
Uva_Id = forms.CharField()

class Meta:
model = User
fields = ('username','email','password', 'full_name', 'codeforces_id', 'Uva_Id')


def save(self, commit=True):
full_name = self.cleaned_data.pop('full_name')
codeforces_id = self.cleaned_data.pop('codeforces_id')
uva_Id = self.cleaned_data.pop('Uva_Id')
user = super(UserForm, self).save(commit=False)
password = self.cleaned_data.get('password')
username = self.cleaned_data.get('username')
user.set_password(password)
user.save()
Profile.objects.create(
user=user,
full_name = full_name,
codeforces_id = codeforces_id,
Uva_Id = uva_id
)
authenticate(username=username, password=password)
return user

# view

class UserFormView(CreateView):
form_class = UserForm
template_name = 'some_template.html'


# template

<form action="/your-name/" method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Submit">
</form>

# Also you can remove the signal related codes from Profile Model as well

关于python - 访问我的网站页面后无法登录管理页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53419504/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com