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

Django同一URL下ModelForm提交与数据展示问题求助

解决同一URL实现表单提交与数据展示的问题

嘿,我懂你想在同一个页面既处理表单提交又展示已有数据的需求,完全不用分开两个视图和URL,只需要把展示数据的逻辑整合到现有的get_name视图里就可以了,下面是具体的修改步骤:

1. 修改views.py,整合数据展示逻辑

把获取所有Eintrag数据的代码加到get_name视图中,确保不管是GET请求(初始加载页面)还是POST请求(提交表单后),都能把已有数据传递给模板:

from django.shortcuts import render
from django.utils import timezone
from django.contrib.auth.decorators import login_required
from .forms import NameForm
from .models import Eintrag

@login_required()
def get_name(request):
    # 先获取所有已有的Eintrag数据
    posts = Eintrag.objects.all()
    form = NameForm()
    
    if request.method == 'POST':
        form = NameForm(request.POST)
        if form.is_valid():
            eintrag = form.save(commit=False)
            eintrag.Name = request.user
            eintrag.pub_date = timezone.now()
            eintrag.save()
            # 提交成功后重置表单,方便用户继续提交新数据
            form = NameForm()
    
    # 统一渲染模板,同时传递表单和已有数据
    return render(request, 'form/name.html', {'form': form, 'posts': posts})

2. 保留现有URL配置

你的urls.py完全不用修改,因为我们只需要使用同一个get_name视图来处理所有请求:

from django.urls import path
from . import views
app_name = 'form'
urlpatterns = [
    path('', views.get_name, name='form'),
]

3. 模板无需额外修改

你已经在name.html中通过{% include "form/post_list.html" %}引入了数据展示的模板,而post_list.html里使用的posts变量现在已经由视图传递过来了,所以模板会自动渲染所有已有数据。

提交表单后,页面会自动显示最新添加的数据,同时表单会被重置,方便用户继续提交新内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:23:09