在Djang中使用纯HTML页面注册

2024-04-19 10:37:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Django新手,所以请对我放轻松点。我有网站的整个前端准备好使用。我用Django写后端。所以,我的主页有一个注册表单,我想用Django-registration-redux注册用户。我不明白的是,是否有必要使用Django表单来生成表单,或者我可以简单地使用纯html,将post数据发送到Django后端。表单如下所示:

<form role="form" id="user_form" method="post"
action="/appname/register" enctype="multipart/form-data">
    {% csrf_token %}
    {% if registered %}
        <strong>Thank you for registering! Check your email and confirm registration.
       </strong>
    {% else %}
        <div class="form-group">
            <label for="register-username" style="color: rgba(255, 255, 0, 0.68);font-weight: 500;">
                <i class="icon-user"></i>
                <b>Email</b>
            </label>
            <input class="form-control" id="register-username" type="text" placeholder="" required>
        </div>
        <div class="form-group" style="color: rgba(255, 255, 0, 0.68);font-weight: 500;">
            <label for="register-password">
                <i class="icon-lock"></i>
                <b>Password</b>
            </label>
            <input class="form-control" id="register-password" type="password" placeholder="" required>
        </div>
</form>

Tags: djangodivformregisterid表单forgroup
3条回答

我想您还没有提到输入字段中的name属性。如果您不想使用django表单功能,那么就可以了。但是请记住在表单中提供name属性,它们的值应该等于模型中定义的值。例如,假设我的模型是类Post(模型。模型):标题=模型.CharField(max_length=100)然后,在您的表单中,您应该声明如下输入字段:

在Django表单中使用纯html有几种方法。事实上,我认为这是大多数情况,因为Django提供的表单系统不够灵活。在

  1. 您可以尝试直接访问POST参数。e、 g

    在视图.py公司名称:

    ...
    username = request.POST.get('username', '')
    password = request.POST.get('password', '')
    register(username, password)
    ...
    

    在模板.html在

    ^{pr2}$

    请注意,您可能需要处理CSRF代币。

  2. 如果你已经有了Django表单,例如

    class LoginForm(forms.Form):
        email = forms.EmailField(label="Email")
        password = forms.CharField(label="Password", max_length=255)
    

    您只需将属性名(如email)与HTML表单中的name属性匹配即可。例如 模板.html在

    <form action="/path" method="post">
      <input type="email" name="email"/>
      <input type="password" name="password"/>
    </form>
    

    然后在你的视图.py,可以实例化窗体并使用

    login_form = LoginForm(request.POST)
    email = login_form.cleaned_data['email']
    password = login_form.cleaned_data['password']
    login(email, password)
    

您不必使用Django forms。您可以在views.py中随意处理post变量:

if request.method == 'POST':
    # do something with request.POST

尽管如此,我还是建议您利用Django表单提供的功能。在

相关问题 更多 >