[英]In Django registration, if username already exists do something
這是 Django 中一個非常基本和快速的問題。
所以在我看來,在我處理注冊的地方,如果用戶嘗試使用已經存在的用戶名進行注冊,我只想給出一條消息,比如表單旁邊的一個跨度,說“錯誤的用戶名”。
如何打印該消息?
謝謝你。
這是我的部分代碼:
def register(request):
if request.method == 'POST':
if User.objects.filter(username = request.POST['username']).exists():
#I want to show next to the username textfield in registration form,
#a span for example that says "Wrong Username"
正如上面的評論中所建議的,您應該使用 form 的 clean 方法進行操作,這會使事情變得更容易。 但是,如果您必須在視圖中執行此操作,這里有一個示例:
if request.method == 'POST':
try:
user_exists = User.objects.get(username=request.POST['username'])
return HttpResponse("Username already taken")
except User.DoesNotExist:
# Username doesn't exist
# Do other validation ...
然后使用 jQuery 或其他東西在span
顯示響應。
要獲取 HTTPResponse 消息,您必須使用 ajax 代替表單提交。
在這里,我假設您正在使用以下類似 html 頁面代碼。
<input type="text" name="username" id="username"/> <p id="error"></p>
<input type="button" value="Register" id="register">
現在,您必須對按鈕的單擊事件進行 ajax 調用,例如:
(我假設您了解 ajax 調用。)
$("#register").on('click', function(){
var username=$("#username").val();
$.ajax({
.
.
.
success: fuinction(data){
if(data=="error occured"){
$("error").append("wrong username");
}
}
})
});
和 views.py 代碼是這樣的:
def register(request):
if request.method == 'POST':
if User.objects.filter(username = request.POST['username']).exists():
return HTTPResponse("error occured")
我想修改上面的答案,這樣可以更容易....我想:)哈哈:
def register(request):
alert = {
"username": request.GET.get('username', ''),
}
if request.method == 'POST':
username = request.POST.get('username', '')
if User.objects.filter(username = request.POST['username']).exists():
alert['username'] = "Username already exists"
return render(request, 'interface/signup.html', alert)
在你的 html 中:讓我們說 -->
<form method="POST"> {% csrf_token %}
<h3>Sign Up</h3>
<label class="label">Username:</label><input type="text" name="username" class="form-control" /><br>
{% if username %}
<div class="alert alert-danger alert-dismissible">
<a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>
{{ username }}
</div>
<br>
{% endif %}
</form>
def register(request):
form = UserCreationForm(request.POST)
if form.is_valid():
else:
# Form is invalid, this includes the user already existing
我知道這已經晚了 2 年,但沒有一個答案是這樣,django 有一種內置的解決方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.