[英]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.