405方法在Django Form POST上是不允许的



每次单击POST表单上的"提交"按钮上传CSV文件。我得到一个代码405不允许的方法。我已经尝试更改其他导入方法,如django_import_export,但仍然得到了相同的响应(405(。请帮忙!

这是我的观点.py:

class AdvisoryView(TemplateView):
template_name = 'advisory.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["adv"] = Mobile.objects.all()
return context
def mobile_upload(request):
template = "advisory.html"
prompt = {
'order': 'blah'
}
if request.method == "GET":
return render(request, template, prompt)
csv_file = request.FILES('file')
if not csv_file.name.endswith('.csv'):
messages.error(request, 'This is not a csv file')
data_set = csv_file.read().decode('UTF-8')
io_string = io.StringIO(data_set)
next(io_string)
for column in csv.reader(io_string, delimiter=',', quotechar='|'):
_, created = Mobile.objects.update_or_create(
mobile_owner=column[0],
mobile_number=column[1],
)
context = {}
return render(request, template, prompt)

mobile.html是这样的。我实际上把表格放在了一个模型表格里。

<div class="modal-body">            
{% block content %}
<form method="POST" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" name="file">
<p>Only accepts .csv file</p>
<button type="submit">Upload</button>
</form>
{% endblock content %}
</div>
<div class="modal-footer">

urls.py是

from django.urls import path, include
from . import views
from .views import AdvisoryView, HomeView

urlpatterns = [
path('', HomeView.as_view(), name='home'),
path('advisory/', AdvisoryView.as_view(), name='advisory'),
]

这个答案解释了为什么在TemplateView中不允许POST。https://stackoverflow.com/a/44859716/11607969

您可能需要将函数mobile_upload更改为post

最新更新