python - 使用或不使用 ModelForms 创建新帐户并使用 HTML/CSS 进行设计

标签 python html css django

在 Django 中使用 ModelForms 创建新用户是最佳实践还是必要的?我所做的是在 HTML 中创建一个表单,并将该表单 POST 到我的一个 View 中的一个函数以创建一个帐户。我问这个的原因是因为我是 Django 的新手,在玩 Django 时,我不确定与我自己在 HTML/CSS 中创建表单相比,ModelForms 是否允许灵活地设计和装饰生成的 HTML。

用户模型:

class BeeradUser(models.Model):
    user = models.OneToOneField(User)
    is_active = models.BooleanField(default=False)
    activation_code = models.CharField(max_length=36)

注册函数:

def register(request):
    if request.method == "POST":
        username = request.POST.get("username")
        firstname = request.POST.get("firstname")
        lastname = request.POST.get("lastname")
        email = request.POST.get("email")
        password = request.POST.get("password")


        payload = {
            "username": username,
            "firstname": firstname,
            "lastname": lastname,
            "email": email,
            "password": password
        }
        try:
            unique_key = str(uuid.uuid4())

            user = User(username=username, first_name=firstname, last_name=lastname, email=email, password=password)
            # Modified User class
            new_user = BeeradUser(user=user, activation_code=unique_key)
        except TypeError as e:
            return render(request, "error/404.html")
        return render(request, "success.html", {"payload": payload})

    else:
        print "there"
        poop = {"data": "sdfsdf"}
        return render(request, "fail.html", {"payload": poop})

形式:

<form class="signup-form" method="post" action="/auth/signup/" id="create-account">
   {% csrf_token %}
   <input id="signup-username" name="username" type="text" placeholder="Username">
   <input id="signup-firstname" name="firstname" type="text" placeholder="First Name">
   <input id="signup-lastname" name="lastname" type="text" placeholder="Last Name">
   <input id="signup-email" name="email" type="email" placeholder="Email">
   <input id="signup-password" name="password" placeholder="Password" type="password"><div id="pswd-msg"></div>
   <input id="signup-confirm-password" name="confirm-password" placeholder="Confirm Password" type="password"><div id="result"></div>
   <button type="submit"  class="btn btn-xl" id="create-acc-btn" name="signup-submit">Create Account</button>
</form>

显然,注册函数还没有将用户save() 到数据库,但我想知道这与使用 ModelForms 相比是否是正确的方法

最佳答案

你没有保存它。试试这个来创建新用户

user = User(username=username, first_name=firstname, last_name=lastname, email=email, password=password)
user.save()

还有

new_user = BeeradUser(user=user, activation_code=unique_key)
new_user.save()

关于python - 使用或不使用 ModelForms 创建新帐户并使用 HTML/CSS 进行设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29913814/

相关文章:

python - 两个数据帧之间的逐元素乘法

python - PyCharm 显示 input() 函数错误

html - 轻松从另一个网站导入元素

css - iPad 1 没有检测到 LESS css?

Python:从标准输入读取大量行

php - 无法使用Python在MySQL中插入表或创建表

javascript - WebSQL 被弃用后,如何与 HTML5 离线应用相处?

jquery - 菜单没有出现在手机上?

JavaScript CSS 动画

javascript - 如何使我的垫片在固定接头中工作?