django - Django模板第二表单输入触发错误视图
问题描述
试图在一个页面上有两个表单并让用户选择创建输入或加载输入。应该很直截了当。似乎不起作用。每当我单击选择一个人并单击加载时,它都会评估创建的第一个 URL。有人可以指出我缺少什么吗?我确定这很简单。
意见:
def Create(request):
print('Create View')
def Load(request):
print('Load View')
网址:
urlpatterns = [
path('', views.Index, name='index'),
path('person/', views.Create, name='Create'),
path('person/', views.Load, name='Load'),
模板:
{% block body_main %}
<form action={% url 'Create' %} method='POST'>
<h2>Name</h2>
{% csrf_token %}
{{ form1 }}
<input class="btn btn-success" name="form1btn" value="Submit" type="submit"/>
</form>
<br>
<form action={% url 'Load' %} method='POST'>
<h2>Select Existing Name</h2>
{% csrf_token %}
{{ form2 }}
<input class="btn btn-success" name="form2btn" value="Submit" type="submit"/>
<form>
{% endblock %}
解决方案
这是问题所在(在Django URL 文档的第 3 点中也提到过:
path('person/', views.Create, name='Create'),
path('person/', views.Load, name='Load'),
每次 django URL 匹配器到达这里时,它通常会Create
先命中并返回。
Django 按顺序遍历每个 URL 模式,并在与请求的 URL 匹配的第一个模式处停止,与 path_info 匹配。
所以它总是会返回Create
视图。
为了解决这个问题,我建议创建 3 个更易读的独立 URL:
path('person/new', views.Create, name='Create'),
path('person/load', views.Load, name='Load'),
推荐阅读
- python-3.x - 查找和替换 xml 子标签文本的 Python 代码
- javascript - 即使在成功的承诺回调之后,组件道具也是空的 - 角度测试
- azure - 90 天后访问 Azure B2C 登录日志
- javascript - 您必须将组件传递给 connect 返回的函数。而是收到 {"propTypes":{}}
- php - 如何将变量从 foreach 循环发送到数组?
- c# - Visual Studio:弹出窗口以显示已实现的接口
- ag-grid - 无法在 stencil.js 中为 ag-grid 进行基本设置
- selenium - Selenium(日期选择器问题)
- html - mailto链接打开无限数量的新标签
- dataframe - 如何复制文件第一行中的每个单词