django - Django:表单在索引中有效,但在特定页面中无效
问题描述
我的网站周围有多种表格。
但是,有一个在主页(index.html)中工作的特定表单,但是当在我网站的某个部分处理这个特定表单时,它不再起作用(在这个部分,如果我回到家一切正常正如预期的那样)。
我错过了什么?
视图.py:
from django.shortcuts import render, HttpResponse, HttpResponseRedirect
from .models import Treasure, TamaniosCantidades
from .forms import TreasureForm, TamaniosCantidadesForm, LoginForm
from django.contrib.auth import authenticate, login, logout
# Create your views here.
def index(request):
treasures = Treasure.objects.all()
form = TreasureForm()
tamanioscantidades_form = TamaniosCantidadesForm()
return render(request, 'main_app/index.html', {'treasures': treasures,
'form': form,
'tamanioscantidades_form': tamanioscantidades_form})
def productos(request):
treasures = Treasure.objects.all()
form = TreasureForm()
return render(request, 'main_app/productos.html', {'treasures': treasures,
'form': form})
def die_cut(request):
tamanioscantidades_form = TamaniosCantidadesForm()
return render(request, 'main_app/die-cut-stickers.html', {'tamanioscantidades_form': tamanioscantidades_form})
def post_tamanioscantidades(request):
form = TamaniosCantidadesForm(request.POST)
if form.is_valid():
tamanioscantidades = TamaniosCantidades(tamanios=form.cleaned_data['tamanios'],
cantidades=form.cleaned_data['cantidades'])
# tamanioscantidades = tamanioscantidades_form.save(commit = False)
# tamanioscantidades.usuario = request.user
tamanioscantidades.save()
return HttpResponseRedirect('/')
def post_treasure(request):
form = TreasureForm(request.POST)
if form.is_valid():
treasure = Treasure(name=form.cleaned_data['name'],
value=form.cleaned_data['value'])
treasure.save()
return HttpResponseRedirect('/')
urls.py:
app_name = 'main_app'
urlpatterns = [
path('', views.index),
path('productos/', views.productos),
path('productos/die-cut-stickers', views.die_cut, name='die-cut-stickers'),
path('post_url/', views.post_treasure, name='post_treasure'),
path('post_url_tamanioscantidades/', views.post_tamanioscantidades, name='post_tamanioscantidades'),
]
*html**:
<div class="col-md-6 border border-primary rounded border-3">
<div class="m-5">
<div class="row">
<form action="post_url_tamanioscantidades/" method="post">
{% csrf_token %}
{{ tamanioscantidades_form.as_p }}
<input type="submit" value="Submit"/>
</form>
</div>
</div>
正如我所说,这个表单可以在家里工作,但是在我网站的某个部分中处理相同的代码时,提交按钮不会将表单保存在数据库中。
它返回:
Page not found (404)
Request Method: POST
Request URL: http://127.0.0.1:8000/productos/post_url_tamanioscantidades/
Using the URLconf defined in gallito.urls, Django tried these URL patterns, in this order:
admin/
productos/
productos/die-cut-stickers [name='die-cut-stickers']
post_url/ [name='post_treasure']
post_url_tamanioscantidades/ [name='post_tamanioscantidades']
accounts/
The current path, productos/post_url_tamanioscantidades/, didn't match any of these.
解决方案
问题是正在提交的表单http://127.0.0.1:8000/productos/post_url_tamanioscantidades/
不存在,而是您希望它提交http://127.0.0.1:8000/post_url_tamanioscantidades/
所以在你的表单html中开始表单操作/
<form action="/post_url_tamanioscantidades/" method="post">
推荐阅读
- sql - 使用多个复选框在 Access 表单中进行过滤
- javascript - JavaScript 中 % 的机制是什么?
- c# - Crystal Reports .NET(具有不同数据库的主报表和子报表)
- javascript - 按下按钮后如何将数据从asp.net传递到javascript
- javascript - 窗帘菜单无法识别我的 JavaScript 源代码
- javascript - 将日期从字符串转换为日期 Javascript
- azure - 如何查看 Azure 中应用服务计划的总已用内存?
- javascript - 无法测试 ng-template 中的输入
- javascript - JavaScript - 解决数组拆分问题的更好方法
- php - 无法获取当前日期的记录