Python - Django [страница ошибки 404 не найдена URL] - PullRequest
0 голосов
/ 31 октября 2018

Я написал следующий простой фрагмент кода, я просто хотел проверить, есть ли при обращении к методу 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 моих проектов дает "" необходимое значение. (То есть.)

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 моего проекта позволило мне работать с URL myapp без ошибки «404», может кто-нибудь объяснить, почему?

Ответы [ 3 ]

0 голосов
/ 31 октября 2018

Заменить 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
0 голосов
/ 01 ноября 2018

Я понял это, так как urls.py в моем приложении требует как URL-адреса проектов, так и приложения

то есть URL проекта ->

path('hellobfs', include('hello.urls'))

URL приложения ->

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
0 голосов
/ 31 октября 2018

Я думаю, вам нужно сохранить форму в файле views.py, попробуйте добавить a, form.save () после вашего, form = helloform (request.POST)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...