我已经编写了以下简单的代码,我只是想检查访问POST方法时是否显示405,但显示未找到页面。
views.py
from django.shortcuts import render, redirect
from django.http import HttpResponse
from .forms import helloform
def index(request):
form = helloform()
return render(request, 'hello/index.html', {'form' : form})
def addintodb(request): #trying to invoke this function
form = helloform(request.POST)
print(request.POST)
return redirect(index)
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
path('add', views.addintodb, name='addtodb'), #using this url
]
index.html
> form action="{% url 'addtodb' %}" method="POST" role="form" # from here
> ...
> </form>
一段时间后,我想到将项目URL设置为“”即可满足要求。 (即)
myproject的urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('hello.urls')) #previously I had path('hellobfs', include('hello.urls'))
]
因此,删除项目url的任何路径使我可以使myapp的url正常工作而不会出现“ 404”错误,有人可以解释原因吗?
答案 0 :(得分:0)
我认为您需要将表单保存在views.py文件中,请尝试在form = helloform(request.POST)之后添加一个form.save()
答案 1 :(得分:0)
将return redirect(index)
替换为return redirect('/', )
。您的代码应如下所示:
def addintodb(request): #trying to invoke this function
form = helloform(request.POST)
print(request.POST)
return redirect('/', ) #<-- this is the url pattern for your index
答案 2 :(得分:0)
我发现了这一点,因为我的应用程序中的urls.py需要项目和应用程序的网址
即 项目网址->
path('hellobfs', include('hello.urls'))
应用的网址->
path('', views.index, name='index'),
path('adding', views.addnewentry, name='add'),
当我需要遍历添加页面时,我需要提供(我在哪里输入错误)
127.0.0.1:8000/hellobfsadding
提供了不允许的方法,并且为了提高可读性,我们可以在项目的url中添加“ /”,例如
path('hellobfs/', include('hello.urls'))
现在我们可以遍历
127.0.0.1:8000/hellobfs/adding