Django - метод, не разрешенный в представлении на основе функций (FBV)
Я получаю 405 METHOD NOT ALLOWED
ответ, когда я пытаюсь отправить запрос POST через вызов AJAX:
"POST /events/profile_update/ HTTP/1.1" 405 0
Я пытаюсь настроить это с наиболее простой точки зрения:
def profile_update(request):
if request.method == "POST":
name_form =forms.EventName(request.POST)
if name_form.is_valid():
name = name_form.cleaned_data['name']
else:
name_form = forms.EventName()
return render(request, 'event_edit_profile.html', {"name": name})
мой urls.py:
urlpatterns = [
url(r'^(?P<slug>[-\w]+)/update/$', views.EventProfileUpdateView.as_view(), name='event_profile_update'),
url(r'^profile_update/$', views.profile_update, name="profile_update"),
]
И в моем шаблоне я использую x-editable встроенное редактирование, чтобы отправить запрос:
<h1 id="name" data-type="text" data-pk="{{ object.id }}" data-url="{% url 'Events:profile_update' %}" data-title="Event Name" data-params="{csrfmiddlewaretoken:'{{csrf_token}}'}">{{ object.name }}</h1>
Похоже, что запрос поступает и не отклоняется из-за CSRF, учитывая, что я не получаю 403, а скорее 405:
"POST /events/profile_update/ HTTP/1.1" 405 0
По некоторым причинам, я не могу пройти через это. У кого-нибудь есть какие-либо идеи относительно того, что может меня обидеть?
1 ответ
Решение
Я нарушил основное правило. Вот исправление:
urlpatterns = [
url(r'^profile_update/$', views.profile_update, name="profile_update"),
url(r'^(?P<slug>[-\w]+)/update/$', views.EventProfileUpdateView.as_view(), name='event_profile_update'),
]