python-3.x - Method Not Allowed (POST) in Django 3.1
问题描述
I am new to Django. Practicing in a small project in Dango 3.1 I get the error "Method Not Allowed (POST)". The error appears when a user presses the Guarder (Save) button.
Method Not Allowed: /pizarra/comunicado/
[30/Jul/2021 09:10:03] "POST /pizarra/comunicado/ HTTP/1.1" 405 0
Everything was working before and I can't understand what I'm doing wrong. Please if someone can help me. Thanks in advance.
comunicado_form.html
{% extends 'gestion/base_gestion.html' %}
{% block page_content %}
<form method="POST" class="form-group">
{% csrf_token %}
<div class="col-xl-12 col-md-12 mb-12">
{% if obj %}
<div class="card border-left-warning shadow h-100 py-2">
{% else %}
<div class="card border-left-success shadow h-100 py-2">
{% endif %}
<div class="card-body">
<div class="row no-gutters align-items-center">
<div class="col mr-2">
<div class="text-xs font-weight-bold text-success text-uppercase mb-1">
{% if obj %}Editar{% else %}Nuevo{% endif %} Comunicado
</div>
<div class="dropdown-divider"></div>
<div class="col-sm-8">
<div class="col-8">
<div class="form-group">
<label for="id_contenido">Contenido del mensaje:</label>
{{ form.contenido }}
</div>
</div>
<div class="col-3">
<div class="form-group">
<label for="id_fecha_vto">Fecha Vto:</label>
{{ form.fecha_vto }}
</div>
</div>
<div class="col-2">
<div class="form-group">
<label for="id_hora_vto">Hora Vto:</label>
{{ form.hora_vto }}
</div>
</div>
<div class="col-3">
<div class="form-group">
<label for="id_es_borrador">¿Es Borrador?:</label>
{{ form.es_borrador }}
</div>
</div>
<div class="col-2">
<div class="form-group">
<label for="id_es_borrador">Estado:</label>
{{ form.estado }}
</div>
</div>
<!-- {{ form.as_p }} -->
</div>
<div class="dropdown-divider"></div>
<div class="row">
<div class="col">
<button type="submit" class="btn btn-danger"><span class="fa fa-save"></span> Guardar</button>
<a href="{% url 'pizarra:comunicado_list' %}" class="btn btn-success"><span class="fa fa-undo"></span> Cancelar</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</form>
{% endblock page_content %}
{% block js_page %}
<script>
$(function () {
$("#id_fecha_vto").datetimepicker({
format: 'd-m-Y',
timepicker:false
});
});
$(function () {
$("#id_hora_vto").datetimepicker({
format: 'H:i',
datepicker:false
});
});
</script>
{% endblock js_page %}
urls.py in app
from django.contrib import admin
from django.urls import path, include
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from blogapp import views
# agregamos estas dos lineas
from django.conf import settings
from django.conf.urls.static import static
from django.contrib.auth import views as auth_views
urlpatterns = [
path('admin/', admin.site.urls),
path('blogapp/',include(('blogapp.urls','blogapp'), namespace='blogapp')),
path('pizarra/', include(('pizarra.urls','pizarra'), namespace='pizarra')),
path('home',include(('blogapp.urls','home'), namespace='home')),
path('login/',auth_views.LoginView.as_view(template_name='blogapp/login.html'),
name='login'),
path('', views.index),
]
urlpatterns += staticfiles_urlpatterns()
urls.py in pizarra
from django.urls import path
from .views import ComunicadoNew, ComunicadoEdit, ComunicadoDel, ComunicadoView
urlpatterns = [
#-------------------- PIZARRA (Comunicados)---------------------------
path('comunicado/',ComunicadoView.as_view(), name='comunicado_list'),
path('comunicado/new',ComunicadoNew.as_view(), name='comunicado_new'),
path('comunicado/edit/<int:pk>',ComunicadoEdit.as_view(), name='comunicado_edit'),
path('comunicado/delete/<int:pk>',ComunicadoDel.as_view(), name='comunicado_del'),
]
views.py in pizzarra
from django.shortcuts import render, redirect
from django.views import generic
from django.urls import reverse_lazy
from django.contrib.auth.mixins import LoginRequiredMixin
from .models import Comunicado
from .forms import ComunicadoForm
# Create your views here.
class ComunicadoView(LoginRequiredMixin,generic.ListView):
model = Comunicado
template_name = "pizarra/comunicado_list.html"
context_object_name = "obj"
login_url = 'blogapp:login'
class ComunicadoNew(LoginRequiredMixin,generic.CreateView):
model = Comunicado
template_name = "pizarra/comunicado_form.html"
context_object_name = "obj"
form_class=ComunicadoForm
success_url=reverse_lazy("pizarra:comunicado_list")
login_url="blogapp:login"
def form_valid(self, form):
form.instance.uc = self.request.user
return super().form_valid(form)
I have defined the static / js as follows:
<!-- Custom fonts for this template-->
<link href="{% static 'blogapp/vendor/fontawesome-free/css/all.min.css' %}" rel="stylesheet" type="text/css">
<link href="https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i" rel="stylesheet">
<!-- Custom styles for this template-->
<link href="{% static 'blogapp/css/sb-admin-2.min.css' %}" rel="stylesheet">
<!-- Custom styles for this page -->
<link href="{% static 'blogapp/vendor/datatables/dataTables.bootstrap4.min.css' %}" rel="stylesheet">
<!-- jquery-confirm -->
<link href="{% static 'blogapp/vendor/jquery_confirm/jquery-confirm.min.css' %}" rel="stylesheet">
<!-- XDSoft DateTimePicker -->
<!-- <link rel="stylesheet" href="{% static 'blogapp/vendor/jquery-datetimepicker/jquery.datetimepicker.min.css" type="text/css"> -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery-datetimepicker/2.5.20/jquery.datetimepicker.min.css" integrity="sha256-DOS9W6NR+NFe1fUhEE0PGKY/fubbUCnOfTje2JMDw3Y=" crossorigin="anonymous" />
and
<!-- Bootstrap core JavaScript-->
<script src="{% static 'blogapp/vendor/jquery/jquery.min.js' %}"></script>
<script src="{% static 'blogapp/vendor/bootstrap/js/bootstrap.bundle.min.js' %}"></script>
<!-- Core plugin JavaScript-->
<script src="{% static 'blogapp/vendor/jquery-easing/jquery.easing.min.js' %}"></script>
<!-- Custom scripts for all pages-->
<script src="{% static 'blogapp/js/sb-admin-2.min.js' %}"></script>
<!-- Page level plugins -->
<script src="{% static 'blogapp/vendor/datatables/jquery.dataTables.min.js' %}"></script>
<script src="{% static 'blogapp/vendor/datatables/dataTables.bootstrap4.min.js' %}"></script>
<script src="{% static 'blogapp/vendor/jquery_confirm/jquery-confirm.min.js' %}"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-datetimepicker/2.5.20/jquery.datetimepicker.full.min.js" integrity="sha256-FEqEelWI3WouFOo2VWP/uJfs1y8KJ++FLh2Lbqc8SJk=" crossorigin="anonymous"></script>
解决方案
推荐阅读
- mongodb - Springboot Rest api 请求超时或在一定时间内未处理请求时取消
- angular - 在输出 html 代码中删除 CSS - kolkov/angular-editor
- arrays - 数组递归
- swift - Swift - 为 Jazzy 添加 xcodebuild 参数
- django - 将 www 重定向到 root (Django WSGI LetsEncrypt) 失败 - 未找到
- c++ - 如何将 const wchar_t 类型转换为 LPTSTR (C++)
- python - 在 Class 中存储表格数据
- laravel - Axios 请求已被 cors 阻止,请求的资源上不存在“Access-Control-Allow-Origin”标头
- android - 在颤动中结合两个不同的firebase集合
- javascript - 让 babel 自动转译