我不是很高级的Django用户。我在网上看到了很多不同的方法,但它们都是针对修改模型或者对我来说太复杂而无法理解的。
我正在我的MyRegistrationForm
中重用UserCreationForm
。
class MyRegistrationForm(UserCreationForm):
email = forms.EmailField(required=True)
class Meta:
model = User
fields = ('username', 'email', 'password1', 'password2')
def save(self, commit=True):
user = super(MyRegistrationForm, self).save(commit=False)
user.email = self.cleaned_data['email']
user.set_password(self.cleaned_data["password1"])
if commit:
user.save()
return user
我不知道如何判断用户输入的用户名是否已被使用,也不知道如何查找。因此,我只能使用以下代码将页面重定向到一个HTML页面,在那里显示“错误的用户名”或“密码不匹配”:
def register_user(request):
if request.method == 'POST':
form = MyRegistrationForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect('/accounts/register_success')
else:
return render_to_response('invalid_reg.html')
args = {}
args.update(csrf(request))
args['form'] = MyRegistrationForm()
print args
return render_to_response('register.html', args)
这是我的注册模板(如有需要):
{% extends "base.html" %}
{% block content %}
<section>
<h2 style="text-align: center">Register</h2>
<form action="/accounts/register/" method="post">{% csrf_token %}
<ul>
{{form.as_ul}}
</ul>
<input type="submit" value="Register" onclick="validateForm()"/>
</form>
</section>
{% endblock %}
但是在用户被重定向之前,我需要引发某种异常或类似的情况。也许当用户按下注册时,他们会收到错误/警告,表示用户名已经被占用了。这是否可能?