【问题标题】:Why won't my UserCreationForm render in chronological order?为什么我的 UserCreationForm 不按时间顺序呈现?
【发布时间】:2020-03-27 22:18:07
【问题描述】:

我想显示表单

  1. 用户名
  2. 电子邮件
  3. 密码
  4. 密码(2)

目前正在显示

  1. 用户名
  2. 密码
  3. 密码 (2)
  4. 电子邮件

我正在尝试学习本教程https://www.youtube.com/watch?v=q4jPR-M0TAQ

我查看了 Github 上的创作者笔记,但这并没有帮助。

我已经仔细检查了我的代码,没有看到任何愚蠢的拼写错误。

谁能提供任何见解?

from django import forms 
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm

class UserRegisterForm(UserCreationForm):
    email = forms.EmailField()

class Meta:
    model = User
    fields = ['username', 'email', 'password1', 'password2']


from django.shortcuts import render, redirect 
from django.contrib import messages 
from .forms import UserRegisterForm

def register(request):
    if request.method == 'POST':
        form = UserRegisterForm(request.POST)
        if form.is_valid():
            form.save()
            username = form.cleaned_data.get('username')
            messages.success(request, f'Account created for {username}!')
            return redirect ('blog-home')
    else:
        form = UserRegisterForm()
    return render(request, 'users/register.html', {'form':form})


{% extends "blog/base.html" %}
{% load crispy_forms_tags %}
{% block content %}
    <div class="content-section">
        <form method="POST">
            {% csrf_token %}
            <fieldset class="form-group">
                <legend class="border-bottom mb-4">Join Today</legend>
                {{ form|crispy }}
            </fieldset>
            <div class="form-group">
                <button class="btn btn-outline-info" type="submit">Sign Up</button>
            </div>
        </form>
        <div class="border-top pt-3">
            <small class="text-muted">
                Already Have An Account? <a class="ml-2" href="#">Sign In</a>
            </small>
        </div>
    </div>
{% endblock content %}

【问题讨论】:

  • 你觉得这个问题的答案中的链接怎么样:stackoverflow.com/questions/350799/…
  • 请出示您的模板。
  • Daniel 希望我在原始消息问题的底部包含了正确的内容。

标签: html django forms


【解决方案1】:

你可以通过这个方法自定义表单的外观和顺序,在account/模板目录下新建一个模板,命名为register.html,如下所示:

{% extends "base.html" %}

{% block title %}Create an account{% endblock %}

{% block content %}
  <h1>Create an account</h1>
  <p>Please, sign up using the following form:</p>
  <form action="." method="post">{% csrf_token %}
    {{ form.username }}
    {{ form.other_fields_as_you_like }}
    <p><input type="submit" value="Create my account"></p>
  </form>
{% endblock %}

【讨论】:

  • 我已经有一些类似的代码,现在我将其粘贴在原始消息的底部。
  • 您可以添加单个字段,如上所示。 form.username、form.email 等
猜你喜欢
  • 2017-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多