Django 3.0.7中不允许使用方法POST

问题描述

我是Django的新手。我正在尝试练习创建“基于原始更新类的视图”,但会遇到错误“不允许使用方法(POST)”。有人可以帮我吗?

我已经按部就班了,但结果是一样的。我也尝试了很多方法解决,但仍然无法解决。我真的很想知道问题所在。我非常感谢有人帮我解决这个问题。

view.py

from django.shortcuts import render,get_object_or_404
from django.views import View
from .models import Client
from .forms import ClientFrom

class ClientUpdateView(View):
    template_name = "clients/client-update.html"
    def get_object(self):
        id = self.kwargs.get('id')
        obj = None
        if id is not None:
            obj = get_object_or_404(Client,id=id)
        return obj

    def get(self,request,id=None,*args,**kwargs):
        #GET Method
        context = {}
        obj = self.get_object()
        if obj is not None:
            form = ClientFrom(instance=obj)
            context['object'] = obj
            context['form'] = form
        return render(request,self.template_name,context)

    def post(self,**kwargs):
        #POST Method
        context = {}
        obj = self.get_object()
        if obj is not None:
            form = ClientFrom(request.POST,instance=obj)
            if form.is_valid():
                form.save()
            context['object'] = obj
            context['form'] = form
        return render(request,context)

forms.py

from django import forms

from .models import Client

class ClientFrom(forms.ModelForm):
    class Meta:
        model = Client
        fields = [
            'Name','Address','Contact',]
client-update.html中的

表单

{% extends 'clienthead.html' %}

{% block content %}
<h1>Update: {{object.id}} - {{ object.Name }}</h1>

<form action='.' method='POST'> {% csrf_token %}
    {{ form.as_p }}
    <input type='submit' value='Save' />
</form>

{% endblock %}

urls.py

from django.urls import path
from .views import (
    ClientUpdateView,)

app_name = 'client'
urlpatterns = [
    path('<int:id>/adjust',ClientUpdateView.as_view(),name='client-adjust'),]

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)