我设计了一个样本注册表单并使用它将其保存到数据库中。我可以成功地将条目保存到数据库,但问题是当创建第二个条目时它会覆盖第一个条目
register.html
<form action="/register_process/" method="post">
{% csrf_token %}
<label for="unamefield">Enter Username</label>
<input type="text" name="unamefield">
<label for="unamefield">Enter Password</label>
<input type="password" name="pwdfield">
<input type="submit" value="Register">
</form>
from django.db import models
class UserRegistration(models.Model):
USER_ID = models.CharField(primary_key=True, max_length=11)
USER_NAME = models.CharField(max_length=50)
PASSWORD = models.CharField(max_length=255, null=False)
class Meta:
db_table = 'USER'
def register_user(request):
args = {}
args.update(csrf(request))
return render_to_response('register.html', args)
def register_process(request):
if request.method == 'POST':
uname = request.POST.get('unamefield')
pwd = request.POST.get('pwdfield')
obj_userregistration = UserRegistration(USER_NAME=uname, PASSWORD=pwd)
obj_userregistration.save()
return HttpResponseRedirect('<html>Success</html>')
答案 0 :(得分:1)
您在定义模型时遇到了一些错误。
首先,没有理由在大写字母中定义您的字段。这很奇怪。
更重要的是,您已将USER_ID字段定义为字段并将其设置为主键。但是您没有提供任何方法来为该字段实际生成新值。除非你有真的好的理由,否则你根本不应该定义一个手动PK字段,而是让Django自动添加一个自动增量整数字段。
但更重要的是,你绝不应该做你在这里做过的事情。您将密码以明文形式存储在数据库中,为各种各样的黑客行为做好准备。不要这样做。 Django包含一个完整的身份验证框架,这是正确完成的,你完全没有理由绕过这个。不要这样做。