Django - 为模型创建对象并将其保存到MYSQL

时间:2014-05-23 09:15:00

标签: python django

我设计了一个样本注册表单并使用它将其保存到数据库中。我可以成功地将条目保存到数据库,但问题是当创建第二个条目时它会覆盖第一个条目

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>

models.py

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'

views.py

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>')

1 个答案:

答案 0 :(得分:1)

您在定义模型时遇到了一些错误。

首先,没有理由在大写字母中定义您的字段。这很奇怪。

更重要的是,您已将USER_ID字段定义为字段并将其设置为主键。但是您没有提供任何方法来为该字段实际生成新值。除非你有真的好的理由,否则你根本不应该定义一个手动PK字段,而是让Django自动添加一个自动增量整数字段。

但更重要的是,你绝不应该做你在这里做过的事情。您将密码以明文形式存储在数据库中,为各种各样的黑客行为做好准备。不要这样做。 Django包含一个完整的身份验证框架,这是正确完成的,你完全没有理由绕过这个。不要这样做。