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

Django如何实现跨页面保存数据并跳转回首页?附代码求助

解决保存联系信息后重定向首页的问题

咱们先拆解下你代码里的几个核心问题,这些问题导致你没法正常完成保存后重定向的功能:

1. 视图函数里的实例创建逻辑完全错误

你原来的views.py里直接写new_item=Blogger.email,这其实是获取了Blogger模型的email字段类,根本没有创建具体的实例,更别说保存用户提交的邮箱了。而且你也没处理用户的POST请求数据,等于没拿到用户输入的邮箱。

2. 重定向用硬编码URL不够可靠

直接返回HttpResponseRedirect('/app')属于硬编码路径,如果后续项目的URL配置变动,这个路径就会失效,最好用Django的反向解析功能。

3. 模板链接硬写路径不够灵活

模板里的<a href="/app/lead">同样是硬编码,改用Django的url标签能自动适配URL配置。


下面是修正后的完整代码:

修正后的 views.py

from django.shortcuts import redirect, reverse, render
from .models import Blogger

def lead(request):
    # 保存数据必须处理POST请求,GET请求返回表单页面
    if request.method == 'POST':
        # 从POST表单里获取用户输入的邮箱
        user_email = request.POST.get('email')
        if user_email:
            # 创建Blogger实例并传入邮箱值
            new_lead = Blogger(email=user_email)
            new_lead.save()
            # 反向解析首页的URL(前提是你给首页URL设置了name='home')
            return redirect(reverse('home'))
    # GET请求时返回表单页面
    return render(request, 'lead.html')

修正后的 urls.py(要给首页URL加name)

from django.conf.urls import url
from . import views

urlpatterns = [
    # 首页的URL,设置name方便反向解析
    url(r'^$', views.index, name='home'),
    url(r'^lead/$', views.lead, name='lead'),
]

修正后的 index.html 链接

<a href="{% url 'lead' %}" title="add lead">Add lead</a>

补充:提交邮箱的表单页面(新建lead.html)

因为你原来的代码里没有提交邮箱的表单,用户没法输入邮箱,所以需要新增这个模板:

<form method="POST" action="{% url 'lead' %}">
    {% csrf_token %} <!-- Django必须的CSRF防护 -->
    <input type="email" name="email" placeholder="请输入你的邮箱" required>
    <button type="submit">保存联系信息</button>
</form>

这样调整后,用户点击"Add lead"会跳转到表单页面,提交邮箱后就会自动保存并重定向回首页啦。

内容的提问来源于stack exchange,提问作者Mustapha Mohd Sagagi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:21:48