这是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"
我想从上面修改一个答案,这样可以更容易......我想:)哈哈:
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>
要获取HTTPResponse消息,必须使用ajax而不是表单提交。
在这里,我假设您正在使用以下类似html页面的代码。
<input type="text" name="username" id="username"/> <p id="error"></p>
<input type="button" value="Register" id="register">
现在,你必须在按钮的点击事件上做一个ajax调用,比如:
(我假设你知道ajax call。)
$("#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")
正如上面一条评论中所建议的,您应该使用表单的干净方法来完成它,这将使事情变得更容易。但如果您必须在视图中执行此操作,下面是一个示例:
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
中显示响应。
问题内容: 我正在使用Django REST框架编写REST API 。该API将成为社交移动应用程序的后端。在学习了本教程之后,我可以序列化所有模型,并且能够创建新资源并对其进行更新。 我正在使用AuthToken进行身份验证。 我的问题是: 获得资源后,我希望应用程序用户能够注册。因此,拥有像这样的单独资源还是允许匿名用户将其发布到新资源更好? 此外,有关权限的一些指导也将非常有用。 问题答案
问题内容: 所以我想做些类似的事情: 当前需要一条路径,例如,如果我给出此路径,则它仅在我位于主页上时才起作用,因此并不是全部。 在普通的node.js中,就像在创建http服务器之后,在进行页面路由之前编写任何内容一样简单。 那么如何使用Express来做到这一点,最好的方法是什么? 问题答案: Express基于Connect中间件。 Express的路由功能由您的应用程序提供,您可以自由地将
问题内容: 如果我的屏幕宽度小于960像素,如何使jQuery做某事?不管我的窗口大小如何,以下代码始终会触发第二个警报: 问题答案: 使用jQuery获取窗口的宽度。
问题内容: 我正在使用自定义的CreateView(CourseCreate)和UpdateView(CourseUpdate)保存和更新课程。保存课程后,我想采取措施。我将在新课程的讲师和用户之间建立新的多对多关系(如果尚不存在)。 因此,我想将“课程”另存为课程,然后使用“ course.faculty”创建该新关系。做到这一点的最佳地点在哪里? 我正在尝试在视图的form_valid中执行此
我试图只允许某些ip地址访问注册路由,但我得到类型错误: 传递给App\Http\Controller\Auth\AuthController的参数1必须是Illumate\Http\Request的实例,没有给出,在第19行的目录\供应商\laravel\框架\src\Illumate\Foundation\Auth\注册sers.php中调用 这是我在中的方法: 有人知道我将如何做到这一点吗?
我正在创建一个测验算法,用于登录系统。对于注册过程,用户名和密码存储在一个文本文件中,并被读取以查看它们是否已经存在。如果是这种情况,则会告诉用户用户名或密码已经存在,并重复此操作,直到输入不存在的内容。发生这种情况时,将追加文本文件以添加用户名。然而,出于某种原因,程序不会检查用户的尝试是否已经存在于文本文件中,而只是将其添加到文本文件中,即使它已经存在。 登录过程是检查变量和文本文件中的字符串