繁体   English   中英

如何将表单连接到 Django 中的模型?

[英]How do I connect forms to models in Django?

我刚刚开始学习 Django,我对表单和模型有疑问。

所以我试图在简化功能中创建的是用户输入他/她的基本信息——电话号码、instagram 帐户、facebook 帐户等——然后数据存储在数据库中并动态显示到用户。 就像社交媒体一样。 但我对表格和模型感到困惑。

我首先做的是创建表单,如下所示(forms.py):

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

class InputUserInfo(forms.Form):
    phone = forms.CharField(max_length=20)
    instagram = forms.CharField(max_length=20)
    facebook = forms.CharField(max_length=20)
    # and so on. Don't mind about which field to use.

然后我有我的 views.py 文件,如下所示:

from django.shortcuts import render, redirect
from .forms import InputUserInfo

def inputuserinfo(response):
    if response.method == "POST":
        form = InputUserInfo(response.POST)
        if form.is_valid:
            form.save()
        return redirect('home')
    else:
        form = InputUserInfo()
    return render(response, 'inputuserinfo.html', {'form' : form }

然后我有我的 inputuserinfo.html 文件,如下所示:

{% extends 'base.html' %}
{% block content %}
<form method="post" action='/inputuserinfo/'>
    {% csrf_token %}
    {{form}}
    <button type='submit'>Done</button>
</form>
{% endblock%}

现在的问题是,我不知道如何处理我的models.py。 我不知道在models.py 中编写哪些代码来将输入数据存储到我的数据库中。

我非常感谢你们的帮助。 :)

在 Django 中,模型是特定数据库的接口。 它将为您创建和发出 SQL 查询。

表单是 HTTP“GET”和“POST”的接口。 它可以生成插入表单标签的 HTML(但不提供标签本身),并且它们可以解释从这样的表单呈现给主机的数据。 与其自己处理 HTML 数据,不如让 Form 对象来做繁重的工作,来来去去。

Django 提供了很多方便的快捷方式,比如ModelForm,它是一个可以基于Model内容的Form 当您赶时间时,它会“快速生成一个看起来可以接受的表格”……就像您经常做的那样。 它可以直接执行诸如save() 之类的操作,因为它知道您要将数据保存到哪个模型。

看起来您遗漏了 ModelForm。 您是否有任何理由不使用基于类的视图。 这样会容易很多吗?

您的 ModelForm 最终将看起来像这样

    class InputUserForm(forms.ModelForm):
'''user form to create the user profile'''
class Meta:
    model = InputUserInfo
    fields = '__all__'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM