You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Django的forms.Form将表单输入存入PostgreSQL数据库?

如何用Django的forms.Form获取输入并存入PostgreSQL数据库

嘿,我来帮你搞定这个需求!咱们一步步来,先从最基础的模型创建开始——毕竟要往数据库存数据,得先有对应的模型映射表~

1. 创建Django模型(models.py)

首先你需要在app的models.py里定义一个模型,字段和你的表单一一对应,用来映射PostgreSQL里的表:

from django.db import models

class Submission(models.Model):
    website = models.URLField()
    email = models.EmailField()
    created_at = models.DateTimeField(auto_now_add=True)  # 可选:自动记录提交时间

    def __str__(self):
        return self.email  # 后台管理里显示邮箱,方便识别

写完模型后,别忘执行迁移命令,让Django帮你在PostgreSQL里创建对应表:

python manage.py makemigrations
python manage.py migrate

2. 完善views.py里的表单处理逻辑

你的views.py里simple_form函数还没写完,咱们把它补全,处理GET和POST两种请求场景:

from django.shortcuts import render, redirect
from .forms import SimpleForm
from .models import Submission  # 引入刚才创建的模型

def simple_form(request):
    if request.method == 'POST':
        # 提交表单时,用POST数据初始化表单
        form = SimpleForm(request.POST)
        if form.is_valid():
            # 表单验证通过,获取清理后的安全数据
            website = form.cleaned_data['website']
            email = form.cleaned_data['email']
            
            # 创建模型实例并保存到PostgreSQL
            Submission.objects.create(website=website, email=email)
            
            # 保存成功后重定向到成功页面(也可以返回当前页面,看你需求)
            return redirect('success_page')  # 记得先在urls.py配置这个路由
    else:
        # GET请求时,展示空表单
        form = SimpleForm()
    
    return render(request, 'simple_form.html', {'form': form})

# 可选:添加一个提交成功的提示页面视图
def success_page(request):
    return render(request, 'success.html')

3. 创建表单模板(templates/simple_form.html)

接下来需要一个模板渲染表单,让用户能输入内容:

<form method="post">
    {% csrf_token %}
    {{ form.as_p }}  <!-- 用p标签渲染表单字段,也可以用form.as_table自定义布局 -->
    <button type="submit">提交</button>
</form>

<!-- 显示表单验证错误信息 -->
{% if form.errors %}
    <div class="error-messages">
        {% for field in form %}
            {% for error in field.errors %}
                <p>{{ field.label }}: {{ error }}</p>
            {% endfor %}
        {% endfor %}
        {% for error in form.non_field_errors %}
            <p>{{ error }}</p>
        {% endfor %}
    </div>
{% endif %}

再创建一个success.html用来提示用户提交成功:

<h1>提交成功!</h1>
<p>你的信息已经成功存入数据库啦~</p>
<a href="{% url 'simple_form' %}">返回表单</a>

4. 配置PostgreSQL数据库(settings.py)

确保你的Django项目已经配置好PostgreSQL连接,在settings.py的DATABASES部分修改成:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': '你的数据库名称',
        'USER': '数据库用户名',
        'PASSWORD': '数据库密码',
        'HOST': 'localhost',  # 数据库在本地就填这个,远程的话填对应IP
        'PORT': '5432',  # PostgreSQL默认端口
    }
}

如果还没装PostgreSQL的Python驱动,先在终端安装:

pip install psycopg2-binary

最后配置路由(urls.py)

别忘了在app的urls.py里添加对应路由:

from django.urls import path
from . import views

urlpatterns = [
    path('form/', views.simple_form, name='simple_form'),
    path('success/', views.success_page, name='success_page'),
]

这样一套流程下来,用户提交表单后,数据会先经过Django表单验证,验证通过就会存入PostgreSQL数据库啦!如果需要调整字段或者逻辑,直接对应修改就行~

内容的提问来源于stack exchange,提问作者user9558965

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:27:59