Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何修复Django表单中的HTTP错误405?_Django - Fatal编程技术网

如何修复Django表单中的HTTP错误405?

如何修复Django表单中的HTTP错误405?,django,Django,那里 我正在使用Django 1.9。我正在和bucky一起看Newboston Django课程 现在,当我尝试测试这个表单时,它不起作用。当我午餐时,代码已经在运行,但是当发送表单时,它会给我这个页面。所以,如果有人知道这个解决方案! 注意:我模仿他用相同版本的Django编写的每一个代码。那么,发生了什么事 views.py url.py registration.html HTTP 405错误代码表示不支持使用的HTTP方法。表单是通过HTTP POST提交的,但所示视图上的POST方法

那里 我正在使用Django 1.9。我正在和bucky一起看Newboston Django课程 现在,当我尝试测试这个表单时,它不起作用。当我午餐时,代码已经在运行,但是当发送表单时,它会给我这个页面。所以,如果有人知道这个解决方案! 注意:我模仿他用相同版本的Django编写的每一个代码。那么,发生了什么事

views.py

url.py

registration.html


HTTP 405错误代码表示不支持使用的HTTP方法。表单是通过HTTP POST提交的,但所示视图上的POST方法未实现,因此无法处理POST请求。表单提交需要通过post方法处理。

共享您的视图和HTMl代码是的,如果您共享您的代码,我们将有助于回答您的问题。请共享错误日志。抱歉,我不知道我怎么会错过它。好的,我现在明白了,但如何解决该问题?chrome版本有什么特别的吗?如果是关于Django版本,那么它是如何与他而不是与我合作的?这和我用的是同一个版本,你能帮忙吗?这和Chrome无关。您在该路由的视图上定义了一个post方法,并将处理表单提交的代码放在那里。看起来在set方法中已经有了它,所以需要重命名它。使用Django的基于类的视图,它调用与所用HTTP谓词匹配的方法
from django.views import generic
from django.views.generic import View
from django.shortcuts import render, redirect
from django.contrib.auth import authenticate, login
from django.views.generic.edit import CreateView, UpdateView, DeleteView
from django.core.urlresolvers import reverse_lazy
from django.core.urlresolvers import reverse
from .models import Album, Song
from .forms import UserForm


class HomeView(generic.ListView):
    template_name = 'music/index.html'

    def get_queryset(self):
        return Album.objects.all()


class DetailView(generic.DetailView):
    model = Album
    template_name = 'music/details.html'


class AlbumCreate(CreateView):
    model = Album
    fields = ['artist', 'album_title', 'genre', 'album_logo']


class AlbumUpdate(UpdateView):
    model = Album
    fields = ['artist', 'album_title', 'genre', 'album_logo']


class AlbumDelete(DeleteView):
    model = Album
    # where are you going when you delete this element from page
    success_url = reverse_lazy('music:home')


class SongView(generic.ListView):
    template_name = 'music/song.html'

    def get_queryset(self):
        return Song.objects.all()


class CreateSong(CreateView):
    model = Song # will affects on this model
    fields = ['album', 'file_type', 'song_title'] # model fields

    # You have used get_absolute_url in models.py so you cannot using it again until no errors wrong
    def get_success_url(self):
        return reverse('music:songs')
    # So the question is: where are the fields that will return these fields?
    # answer is: you will create Html file which called song_form and that contains all fields you hold


class UserFormView(View):
    form_class = UserForm
    template_name = 'music/registration.html'


    def get(self, request):
        # Empty value
        form = self.form_class(None)
        return render(request, self.template_name, {'form': form})


    def set(self, request):
        form = self.form_class(request.POST)

        if form.is_valid():
            # If form is True catch the form that came by POST without saving it
            user = form.save(commit=False)
            # cleaned_data allow to check if any field has errors or it's Normalized data
            # check data automatically by Django
            username = form.cleaned_data['username']
            password = form.cleaned_data['password']
            # make the password field not visual
            user.set_password(password)
            user.save()
            # If the given credentials are valid, return a User object
            user = authenticate(username=username, password=password)

            # Check if user has logged in or not
            if user is not None: # -> so, it was post
                if user.is_active:
                    login(request, user)
                    return redirect('music:home')
        return render(request, self.template_name, {'form': form})
from django.conf.urls import url

from . import views

app_name = 'music'

urlpatterns = [
    # /music/
    url(r"^$", views.HomeView.as_view(), name='home'),
    # /music/register/
    url(r"^register/$", views.UserFormView.as_view(), name='register'),
    # /music/123/
    url(r'^(?P<pk>[0-9]+)/$', views.DetailView.as_view(), name='details'),
    # /album/add/
    url(r'^album/add/$', views.AlbumCreate.as_view(), name='add-album'),
    # /album/123/
    url(r'^album/(?P<pk>[0-9]+)/$', views.AlbumUpdate.as_view(), name='update-album'),
    # /album/123/delete/
    url(r'^album/(?P<pk>[0-9]+)/delete/$', views.AlbumDelete.as_view(), name='delete-album'),
    # /music/song/
    url(r'^song/$', views.SongView.as_view(), name='songs'),
    # /music/song/
    url(r'^song/add/$', views.CreateSong.as_view(), name='add-song'),
]
{% extends 'music/base.html' %}
{% block body %}

    <div class="album-form">
        <div class="container-fluid">
            <div class="row">
                <div class="col-sm-12 col-md-7">
                    <div class="panel panel-default">
                        <div class="panel-body">
                            <h2>Create a new account</h2>
                            <form class="form-horizontal" action="" method="post" enctype="multipart/form-data">
                                {% csrf_token %}
                                {% include 'music/form-template.html' %}
                                <div class="form-group">
                                    <div class="col-sm-offset-2 col-sm-10">
                                        <button type="submit" class="btn btn-success">Submit</button>
                                    </div>
                                </div>
                            </form>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

{% endblock %}