0
我已經在Django中創建了一個用戶註冊表單,但每次測試時,用戶都沒有被保存到數據庫,因爲當輸入密碼時它提出了「這個領域不能爲空,我不明白爲什麼這種情況發生以來,這個表格之前工作,它遵循相同的程序作爲其他登記表格,我一直試圖找出問題的原因爲天我仍然不理解該字段如何可以爲null,但仍然無法工作,但在終端中,我沒有收到任何錯誤消息,並且登錄表單正在工作,因爲用戶是通過管理員創建的。感謝您的幫助,這裏是我正在使用的代碼如何阻止Django中的用戶註冊表單不能爲空
用戶形式
class UserForm(forms.ModelForm):
email = forms.EmailField(label="Email Address")
password = forms.CharField(widget=forms.PasswordInput)
class Meta:
model = User
fields = ['first_name', 'last_name', 'username', 'email', 'password']
def clean_email(self):
email = self.cleaned_data.get('email')
email_qs = User.objects.filter(email=email)
if email_qs.exists():
raise forms.ValidationError("This email already exists.")
return email
def clean_username(self):
username = self.cleaned_data.get('username')
username_qs = User.objects.filter(username=username)
if username_qs.exists():
raise forms.ValidationError("This username already exists.")
return username
def clean_password(self):
password = self.cleaned_data.get('password')
if len(password) <= 8:
raise forms.ValidationError("Password must be longer than 8 characters")
else:
print("password saved")
我的觀點註冊功能
def register_view(request):
form = UserForm(request.POST or None)
if form.is_valid():
user = form.save(commit=False)
username = form.cleaned_data['username']
password = form.cleaned_data['password']
user.set_password(password)
user.save()
new_user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, new_user)
return redirect('/appname/account/')
return render(request, "appname/index.html", {"form": form})
我的HTML
% block signup %}
<div clss="container-fluid">
<div class="row">
<div class="col-sm-6" style="background-color:yellow;">
<h1>appname</h1>
<p>x and x</p>
</div>
<div>
<div class="col-sm-6">
<h3>Sign Up</h1>
<form method="POST" action="{% url 'appname:index' %}">
{% csrf_token %}
{{ form }}
<input type="submit" class="btn" value="Sign Up"/>
</form>
<h5>Have an Account? <a href="{% url 'appname:login' %}">Login</a></h5>
</div>
</div>
</div>
</div>
{% endblock %}
Django的表單字段哇,非常感謝,修正了它。這是有道理的,因爲我在註冊工作之後添加了該功能。欣賞它。 – BigMonkey89WithaLeg
@ BigMonkey89WithaLeg樂於提供幫助 - 如果解決了問題 - 請註明這是您的問題的解決方案。謝謝 –