单击“提交”按钮时,数据未插入数据库中

时间:2017-01-23 02:13:29

标签: python django django-1.10

我在Django(1.10.5)/ Python 3.4中创建了我的第一个应用程序。我有一个登录页面和一个注册页面。哪个工作正常。

我可以创建新用户并使用该ID登录。现在登录后我希望用户填写一份包含一些信息的表格,然后点击提交。并且信息应该存储在数据库中。

所以我先创建了一个模型: Model.py

class UserInformation(models.Model):
     firstName = models.CharField(max_length=128)
     lastName = models.CharField(max_length=128)
     institution = models.CharField(max_length=128)
     institutionNumber = models.CharField(max_length=128)
     cstaPI = models.CharField(max_length=128)
     orchidNumber = models.CharField(max_length=128)

这在DB中创建了一个表。

forms.py

class UserInformationForm(ModelForm):
    class Meta:
        model = UserInformation
        fields = '__all__'

views.py

def home(request):
    form = UserInformationForm()
    variables =  { 'form': form, 'user': request.user }
    return render(request,'home.html',variables)

home.html的

{% extends "base.html" %}
{% block title %}Welcome to Django{% endblock %}
{% block head %}Welcome to Django{% endblock %}
{% block content %}
    <p> Welcome {{ user.username }} !!! <a href="/logout/">Logout</a><br /><br /> </p>   

    <form method="post" action=".">{% csrf_token %}
        <table border="0">
            {{ form.as_table }}
        </table>
    <input type="submit" value="Submit"  style="position:absolute"/>

    </form>

{% endblock %}

但是当我点击提交按钮时,它不会将数据插入我的表格。

2 个答案:

答案 0 :(得分:1)

这里是答案,我们需要使用request.POST

def home(request):
    if request.method == 'POST':
        form = UserInformationForm(request.POST)
        form.save()
        return HttpResponseRedirect('/home/')
    else:
        form = UserInformationForm()
        variables =  { 'form': form, 'user': request.user }

    return render(request,'home.html',variables)

答案 1 :(得分:0)

第一个:您需要将urls.py添加到您的应用中 第二个:你需要改变你的views.py来像这样lool

`
    info = UserInformation()
    lastName = request.POST.get('lastName')
    ...
    info.save()
`