django - Django 中的“post”方法
问题描述
我创建了三个文件:
2- view.py :
class AddTeamView(View):
def get (self, request):
form = TeamForm()
context = {'form': form}
return render(request, 'add_team.html', context)
1-forms.py:
class TeamForm(forms.Form):
name = forms.CharField( max_length='100')
details = forms.CharField(max_length='250')
3-add_team.html:
-这里有另一个名为“base.html”的文件
{% extends 'base.html' %}
{% block title %}
add team
{% endblock %}
{% block content %}
<form action="/add_team/" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit">
</form>
{% endblock %}
我去cmd并输入服务器“python manage.py runserver”
它出现在浏览器上:
“此页面无法正常工作如果问题仍然存在,请联系网站所有者。HTTP 错误 405”
解决方案
鉴于存在相应的方法,视图可以支持GET
, POST
,PUT
等方法,因此视图应具有, ,等功能。.get(..)
.post(..)
.put(..)
在这里,您只实现了 a def get(self, request)
,因此POST
不允许请求。
但是,根据您显示的数据,这看起来像是CreateView
[Django-doc]的典型用例。这些视图的想法是封装常见场景,这样通过覆盖一些属性,可以创建一个针对特定情况量身定制的视图,例如:
class AddTeamView(CreateView):
form_class = TeamForm
template_name = 'add_team.html'
success_url = '/some/success_url'
TeamForm
可能应该是 a ModelForm
,或者至少应该是 a ,您可以在Form
其中重写.save(..)
函数以将数据正确保存到数据库中,因为现在,表单没有做任何事情(它接收数据,但在验证后,它会将其丢弃) .
form_valid(..)
如果您不想重定向到success_url
. success_url
此外,从给定的视图名称中延迟解析是很常见的,例如:
class AddTeamView(CreateView):
form_class = TeamForm
template_name = 'add_team.html'
success_url = reverse_lazy('view_name')
推荐阅读
- javascript - 如何将字符串附加到 JavaScript 中数字的 innerText 以用于动画计数器
- c# - Devexpress gridview 单元格值不会立即出现
- react-admin - 无法让 ReferenceManyField 显示数据
- javascript - 未登录如何访问 Home 组件?
- javascript - 如何在 chrome 扩展 v3 中加载内容脚本
- azure-devops - 由于错误,“发现”类型的切片为“已中止”:System.Exception:NUnit Adapter 4.0.0.0:测试发现完成
- ios - 我可以使用 Transporter 将 Flutter iOS 应用上传到 App Store 控制台吗?
- java - Android Mediacodec 解码具有大绿色填充的 h264 视频流单帧
- git - git log 将合并的提交与其他分支区分开来
- reactjs - 如何在反应js中验证出生日期