Вопрос:

Django - рассылка URL - страница не найдена

django python-3.x django-urls

175 просмотра

1 ответ

8 Репутация автора

Я очень озадачен тем, почему диспетчер URL пытается найти пустой путь, хотя для него был указан URL? Означает ли это, что он не может найти указанный URL и, следовательно, пытается найти значение по умолчанию.

Это происходит, когда я пытаюсь POST и HttpResponseRedirect ищет пустой путь вместо того, чтобы следовать указанному пути. Предположим, что другой.

Используя версию Django: 2.0

Заранее спасибо!

main / urls.py (ROOT_URLCONF)

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
   path('admin/', admin.site.urls),
   path('app/', include('shorterner.urls'))
]

shorterner / urls.py

from django.urls import path
from . import views

urlpatterns = [
  path('request/', views.RequestView.as_view(), name="request"),
  path('list/', views.IndexView.as_view(), name="list")
]

shorterner / views.py

from django.shortcuts import render, redirect
from django.http import HttpResponseRedirect
from django.conf import settings
from django.urls import reverse
from django.views import View, generic
from .models import Urls

import requests
import json

from .forms import SubmitUrlForm

class RequestView(View):
  form_class = SubmitUrlForm
  initial = { 'url': ''}
  template_name = "shorterner/request.html"
  context_object_name = 'url'

  def form_valid(self, form):
    return super().form_valid(form)

  def get(self, request, *args, **kwargs):
    form = self.form_class(initial=self.initial)
    return render(request, self.template_name, {'form': form})

  def post(self, request, *args, **kwargs):
    form = self.form_class(request.POST)
    if form.is_valid():
      input_url = form.cleaned_data['url']
      short_url = google_url_shorten(input_url)

      print(input_url)
      print(short_url)

      new_url = Urls.create(short_url, input_url)
      new_url.save()

      return HttpResponseRedirect('/app/request/')
    return render(request, self.template_name, {'form': form})

shorterner / шаблоны / shorterner / request.html

{% extends 'shorterner/base.html' %}

{% block content %}

    <form action="/" method="POST">
      {% csrf_token %}
      <input type="text" name="url" placeholder="Url..." required/>        
      <input type="submit" value="Submit"/>
    </form>

{% endblock %}

Скриншот проблемы Страница ошибок

Автор: Gabriel Источник Размещён: 02.01.2018 04:48

Ответы (1)


0 плюса

522 Репутация автора

Решение

Похоже, вы отправляете данные формы по этому пути /. Но вы не определили этот маршрут в main/urls.py.

Автор: Kapil Barad Размещён: 02.01.2018 05:01
Вопросы из категории :
32x32