Python-Django [找不到错误404页面的网址]

时间:2018-10-31 08:10:22

标签: python django url view

我已经编写了以下简单的代码,我只是想检查访问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”错误,有人可以解释原因吗?

3 个答案:

答案 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