【问题标题】:Django forms not workingDjango表单不起作用
【发布时间】:2015-12-03 04:43:27
【问题描述】:

您好,我有一个简单的 django 表单,可以让用户注册到该网站。但我很困惑如何提交我的表单字段。我是 Django 的新手。请帮助我。提前致谢。

Forms.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)

Views.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 %}

【问题讨论】:

    标签: python html django django-forms


    【解决方案1】:

    要做你已经得到的,你需要有一个ModelForm,这样当你调用form.save() Django 知道你正在创建一个实例的模型。例如;

    Forms.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')
    

    【讨论】:

      猜你喜欢
      • 2015-04-16
      • 2017-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-07
      相关资源
      最近更新 更多