我很困惑,尽管为它指定了 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'))
]
较短的/ 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")
]
较短/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})
较短/模板/较短/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 %}
问题错误页面截图
看起来您正在将表单数据发送到此路径/
。但是您还没有在main/urls.py
.
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句