python - Django 表单不工作

标签 python html django django-forms

嗨,我有一个简单的 django 表单,它使用户能够注册该网站。但我很困惑如何提交我的表单字段。我是 Django 新手。请帮助我。提前致谢。

表单.py:

from django import forms
from django import forms
from django.contrib.auth.models import User   # fill in custom user info then save it
# from django.contrib.auth.forms import UserCreationForm


class UserForm(forms.Form):
    email = forms.EmailField(max_length=100, null=True, blank=False)
    first_name = forms.CharField(max_length=20)
    password = forms.CharField(max_length=20, required=True, label="password", widget=forms.PasswordInput)
    last_name = forms.CharField(max_length=20)
    date_joined = forms.DateTimeField(auto_now_add=True, auto_now=False)
    date_ = forms.DateTimeField(auto_now_add=False, auto_now=True)

View .py

def register_user(request):
    if request.method == 'POST':
        print "Saisisis"
        form = UserForm(request.POST)     # create form object
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/accounts/register_success')
    print "blah"
    args = {}
    args.update(csrf(request))
    args['form'] = UserForm()
    # import pdb
    # pdb.set_trace()
    print args
    return render(request, 'pages/signup.html', args)

和我的html:

{% extends 'pages/base.html' %}
{% block additional_styles %}
<style>
    body{
    background:url(static/img/nose.jpg) no-repeat center center fixed;
    -webkit-background-size: cover
    -moz-background-size: cover;
    -o-background-size: cover;
    background-size: cover;
    }
</style>
{% endblock %}

{% block contentblock %}
<div class="container well">

    <h1> Please Sign Up fellas</h1>

    <form method="POST" action="login.html">
        {% csrf_token %}
        {{ form.as_table }}

        <input type="submit" value="OK">

    </form>
</div>

{% endblock %}

最佳答案

要完成您所要做的事情,您需要有一个 ModelForm ,以便当您调用 form.save() 时,Django 知道您的模型是什么正在创建一个实例。例如;

表单.py:

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


class UserForm(forms.ModelForm):
    email = forms.EmailField(max_length=100, null=True, blank=False)
    first_name = forms.CharField(max_length=20)
    password = forms.CharField(max_length=20, required=True, label="password", widget=forms.PasswordInput)
    last_name = forms.CharField(max_length=20)
    date_joined = forms.DateTimeField(auto_now_add=True, auto_now=False)
    date_ = forms.DateTimeField(auto_now_add=False, auto_now=True)

    class Meta:
        model = User

但是根据您所拥有的信息,您需要自己创建模型实例,然后设置数据,然后保存;

def register_user(request):
    if request.method == 'POST':
        form = UserForm(request.POST)     # create form object
        if form.is_valid():
            email = form.cleaned_data['email']
            user = User(email=email)
            user.save()
            return HttpResponseRedirect('/accounts/register_success')

关于python - Django 表单不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32441843/

相关文章:

python - 从源 : Pycharm doesn't get autocomplete information 构建的 OpenCV

jquery - 使用 jquery 插入表行数据

javascript - 如何将包含 HTML 的字符串解析为 React 组件

python - 如何过滤 Django 对象以接受匹配项和 NULL?

python - 如何在 Python 中从图像 url 创建拼贴画

python - VSCode : Cannot 'import matplotlib'

python - XlsxWriter 和 Pandas 中的列名问题

使用 pymodbus 模块的 Python Modbus 服务器

从 readfile() php 代码读取文件时,PHP/HTML 无法控制视频时间

python - 如果下拉列表为空而不显示,我如何从前端检查?