django - '将 html 表单数据保存在数据库中' django
问题描述
我正在尝试通过在 postgres 数据库中使用 django 保存来自 HTML 的名称和电子邮件,在操作标记中,提到了函数名称但使用该函数,django 正在将该数据传递到具有相同函数名称的新页面
HTML
<form class="newsletter_form d-flex flex-md-row flex-column align-items-start justify-content-between" action="subscribe" method="post">
{%csrf_token%}
<div class="d-flex flex-md-row flex-column align-items-start justify-content-between">
<div>
<input name="subname" type="text" class="newsletter_input newsletter_input_name" id="newsletter_input_name" placeholder="Name" required="required">
<div class="input_border"></div>
</div>
<div>
<input name="subemail" type="email" class="newsletter_input newsletter_input_email" id="newsletter_input_email" placeholder="Your e-mail" required="required">
<div class="input_border"></div>
</div>
</div>
<div><button type="submit" class="newsletter_button">subscribe</button></div>
</form>
视图.py
def subscribe(request):
if request.method == 'POST':
subname = request.POST['subname']
subemail = request.POST['subemail']
sub = User.objects.create_user(subname=subname, subemail=subemail)
sub.save();
return redirect('/')
else:
return redirect('/')
网址.py
from django.urls import path
from . import views
urlpatterns = [
path("register", views.register, name='register'),
path("login", views.login, name='login'),
path("logout", views.logout, name='logout'),
path("subscribe", views.subscribe, name='subscribe')
]
这是错误
解决方案
首先,您没有使用重定向,redirect('/')
因为当您重定向时,您应该使用您分配的名称,urls.py
即path("register", views.register, name='register'),
此处的名称是注册
然后在views.py
:
def subscribe(request):
if request.method == 'POST':
subname = request.POST['subname']
subemail = request.POST['subemail']
sub = User.objects.create_user(subname=subname, subemail=subemail)
return redirect('subscribe')
else:
return redirect('home')
我编辑的是:
- 已删除
sub.save()
,因为那仅用于 django 表单。
关于导致 404 的订阅 url,您没有呈现单个模板,订阅功能应该如何工作?
在订阅函数的最后调用render()
函数
和简单的建议,在每个 url 模式的末尾添加一个斜杠,即path("register/", views.register, name='register'),
:) 这是可取的
推荐阅读
- html - 强制css中的高度
- netsuite - 如何通过 WSDL 更新 NetSuite Department isInactive?
- javascript - 如何将 HTML 画布作为图像发送?
- spring-mvc - 如何在 thymeleaf 和 Spring MVC 中使用输入单选按钮
- php - 编辑 Woocommerce 产品变体的购物车项目属性值
- r - 如何在 Shiny 应用程序中将上传的文件转换为 DataFrame
- android - 无法获取未知属性“CLIENT_ACCESS_TOKEN”
- simulink - 如何重新排列 simulink 子系统的端口
- java - 春天 - java.io.FileNotFoundException
- python - 检查新创建的 canvas_image 是否与先前制作的 canvas_image Python Tkinter 重叠