【问题标题】:Issue using the django usercreationform, not rendering form in HTML使用 django usercreationform 的问题,而不是在 HTML 中呈现表单
【发布时间】:2021-06-28 21:47:26
【问题描述】:

我正在使用 UserCreationForm 在 django 项目中创建一个注册页面,但是在渲染我的 html 时,我只看到提交按钮

from django.shortcuts import render
from django.contrib.auth.forms import UserCreationForm

def register(request):
    form = UserCreationForm
    return(render(request, 'register.html', {form: form}))

{% extends 'base.html' %}

{% block title %}Sign Up{% endblock %}

{% block body %}
<form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <input type="button">
    <button type="submit">Sign up</button>
</form>
{% endblock %}

【问题讨论】:

    标签: python html django


    【解决方案1】:

    你不能使用表单作为上下文的键,你应该使用'form'。此外,将引用传递给类不是一个好主意,您应该在视图中创建表单的实例,所以:

    from django.shortcuts import render
    from django.contrib.auth.forms import UserCreationForm
    
    def register(request):
        form = UserCreationForm()
        #            use 'form' instead of form  &downarrow;    &downarrow;
        return render(request, 'register.html', {'form': form})

    如果您使用了表单object,而不是对类的引用,则会引发Form 不可散列的错误。但是由于您使用了对表单类的引用,因此没有错误,因此未被检测到。

    【讨论】:

    • 感谢您的回复,虽然您已经解决了我的部分问题,但又出现了另一个问题。虽然当我不扩展基本 HTML 时表单会显示,但当我扩展时它不会显示。有什么想法吗?
    • 我建议提出一个新问题。定义一个最小的工作示例,以便共享视图、模板、基本模板等的相关部分。
    【解决方案2】:

    问题出在 django 视图函数中..改用下面的代码.. 您应该将其作为字符串变量传递 {'form' :form}

    return render(request, 'register.html', {'form': form})
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 2017-01-26
      • 2018-08-31
      • 2019-04-25
      相关资源
      最近更新 更多