【问题标题】:Django - Method Not Allowed on Function Based View (FBV)Django - 基于函数的视图 (FBV) 上不允许的方法
【发布时间】:2016-11-25 07:51:22
【问题描述】:

当我尝试通过 AJAX 调用提交 POST 请求时收到405 METHOD NOT ALLOWED 响应:

"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 而被拒绝,因为I don't get a 403,而是 405:

"POST /events/profile_update/ HTTP/1.1" 405 0

出于某种原因,我似乎无法克服这一点。有人对我搞砸了什么有任何想法吗?

【问题讨论】:

    标签: django django-views x-editable


    【解决方案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'),
    ]
    

    【讨论】:

    • 感谢您的回答,它有效。我也在为同样的问题而苦苦挣扎。
    猜你喜欢
    • 2016-05-20
    • 2020-06-16
    • 1970-01-01
    • 2021-07-25
    • 2022-01-16
    • 2022-11-26
    • 2014-02-16
    • 2021-05-10
    • 1970-01-01
    相关资源
    最近更新 更多