405 Метод не разрешен для Django Форма POST - PullRequest
0 голосов
/ 11 марта 2020

Каждый раз, когда я нажимаю кнопку «Отправить» в форме POST, чтобы загрузить файл CSV. Я получаю код 405 Метод не разрешен. Я уже пытался изменить другие методы импорта, такие как django_import_export, но все равно получил тот же ответ (405). Пожалуйста, помогите!

Это мои views.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)

и мобильный телефон. 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'),
]

1 Ответ

0 голосов
/ 11 марта 2020

Этот ответ объяснил, почему POST не разрешен в TemplateView. { ссылка }

Возможно, вам придется изменить свою функцию mobile_upload на post.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...